Étape 3 : Créer une base de données
Si vous installez Drupal sur un site de test, vous pouvez ignorer cette étape. Lors du lancement du script d’installation (étape suivante), il suffit de fournir un nom d’utilisateur et un mot de passe pour un utilisateur de base de données ayant le droit de créer une nouvelle base de données.
Si vous installez Drupal sur un serveur web public, vous devez d’abord créer une base de données et donner accès à un utilisateur moins privilégié. L’utilisateur de base de données que vous spécifiez lors de l’installation se connectera à la base à chaque chargement de page.
Cette page présente des instructions pour créer une base de données Drupal selon l’une des méthodes suivantes :
- Panneau de contrôle basé sur un navigateur (par exemple, « CPanel » ou « Plesk »)
- PhpMyAdmin
- Utilisation de commandes SQL (via ligne de commande)
- Utilisation des commandes MySQL / MariaDB
- Utilisation des commandes PostgreSQL
Choix des caractères dans le nom de la base de données MySQL / MariaDB
- Les majuscules dans le nom de base de données sont converties en minuscules.
- Caractères autorisés : a..z, 0..9 et « _ » (underscore).
Créer une base de données et un utilisateur via un panneau de contrôle web
La plupart des hébergeurs web fournissent un panneau de contrôle web pour administrer votre site. Ces outils proposent des fonctions simples pour créer une nouvelle base de données et un utilisateur avec les droits associés. Pour créer une base via un panneau web, consultez la documentation ou contactez votre hébergeur.
Lors de la création d’un utilisateur pour la base, vous pouvez voir une page pour attribuer des privilèges. Dans la plupart des « assistants base de données » des panneaux, en cochant simplement « Tous » les privilèges pour l’utilisateur créé (et en décochant « Grant » si disponible), l’utilisateur sera correctement configuré.
Notez les noms d’utilisateur, mot de passe, nom de base et nom d’hôte. (Par ex., pour une installation sur http://example.com, http://drupal.example.com, ou http://example.com/blog) Vous devrez entrer ces informations dans le navigateur lors du script d’installation.
Souvent, le nom d’utilisateur de connexion au panneau de contrôle est préfixé aux noms de base et d’utilisateur créés. Par exemple, si vous êtes connecté comme « webadmin » et créez une base « drupal8db » et un utilisateur « d8user », lors de l’installation vous devrez peut-être utiliser « webadmin_drupal8db » et « webadmin_d8user ». Cela permet d’éviter les conflits sur des serveurs partagés où chaque nom doit être unique.
Créer une base de données et un utilisateur avec phpMyAdmin
La méthode la plus sûre dans phpMyAdmin est de créer un utilisateur avec tous les privilèges sur la nouvelle base uniquement, sans droits sur les autres bases. Ceci limite l’accès en cas de compromission.
Remarque : Cette procédure suppose que vous avez un accès root à phpMyAdmin et que vous utilisez la version 3.5.x.
- Connectez-vous à phpMyAdmin en tant que root.
- Cliquez sur « Utilisateurs », puis sur « Ajouter un utilisateur ». (Note : vous pouvez aussi utiliser l’utilisateur root.)
- Dans « Nom d’utilisateur », saisissez le nom souhaité.
- Pour « Hôte », choisissez « Local » pour plus de sécurité, sauf si la connexion se fait depuis un autre serveur.
- Saisissez ou générez un mot de passe.
- Sélectionnez dans « Base de données pour l’utilisateur » l’option « Créer une base de données » avec le même nom et accordez tous les privilèges.
- Choisissez le COLLATE utf8mb4_unicode_ci ou utf8mb4_general_ci.
- Note : utf8mb4_general_ci est un peu plus rapide, utf8mb4_unicode_ci est plus précis. Si vous hésitez, choisissez utf8mb4_unicode_ci.
- Note : Si vous ne pouvez pas choisir le COLLATE maintenant, vous pourrez le modifier plus tard via la section « Opérations » dans phpMyAdmin.
8. Cliquez sur « Go » pour créer l’utilisateur.
phpMyAdmin crée alors une base avec le même nom que l’utilisateur. Pour utiliser un nom différent :
- Allez dans « Bases de données » et cliquez sur la base à renommer.
- Cliquez sur « Opérations ».
- Dans « Renommer la base en », saisissez le nouveau nom.
- Cliquez sur « Go ».
Pour plus d’informations sur phpMyAdmin, consultez la wiki officielle.
Notez bien nom utilisateur, mot de passe, nom de base, et hôte. Vous les saisirez lors du script d’installation.
Souvenez-vous que le préfixe du nom utilisateur du panneau peut être ajouté aux noms de base et utilisateur, comme expliqué précédemment.
Créer une base de données via la ligne de commande
Si vous ne disposez pas d’un panneau web ou préférez la ligne de commande, vous pouvez utiliser les commandes MySQL, MariaDB ou PostgreSQL suivantes.
Plus d’informations sur les privilèges et création via ligne de commande dans INSTALL.mysql.txt (MySQL/MariaDB) et INSTALL.pgsql.txt (PostgreSQL).
Créer une base avec les commandes MySQL / MariaDB
Note : La base doit être créée avec un encodage UTF-8 (unicode) utf8mb4 et un COLLATE utf8mb4_unicode_ci ou utf8mb4_general_ci. utf8mb4_general_ci est plus rapide, utf8mb4_unicode_ci plus précis. Choisissez utf8mb4_unicode_ci si incertain.
Pour installer et configurer MySQL, consultez http://dev.mysql.com/doc/refman/5.7/en/index.html.
Pour MariaDB, consultez https://mariadb.com/kb/en/.
Dans les exemples ci-dessous, « username » est un utilisateur MySQL/MariaDB avec les privilèges CREATE et GRANT, et « databasename » est le nom de la nouvelle base. Adaptez ces noms à votre système.
1. Créez la base :
mysql -u username -p -e "CREATE DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci";
MySQL/MariaDB demande le mot de passe de « username » et crée la base.
2. Connectez-vous :
mysql -u username -p
MySQL/MariaDB demande le mot de passe.
3. Créez l’utilisateur et donnez les permissions :
CREATE USER username@localhost IDENTIFIED BY 'password'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON databasename.* TO 'username'@'localhost' IDENTIFIED BY 'password';
Notez :
Utilisez des backticks (`) autour du nom de la base s’il contient des caractères spéciaux (_ ou %). Pour le caractère _, écrivez-le comme \_ dans la commande GRANT pour éviter qu’il ne soit pris comme un joker. Par exemple, pour la base drupal_test_account.* écrivez `drupal\_test\_account`.*
.
Note 1 : Si la combinaison utilisateur/hôte de la base n’a pas ces privilèges (sauf CREATE TEMPORARY TABLES utilisé pour les tests), Drupal ne pourra pas s’installer ni fonctionner.
Note 2 : Pour restaurer un dump créé par Drush, ajoutez le privilège LOCK TABLES.
Plus d’infos sur GRANT : http://dev.mysql.com/doc/refman/5.0/en/grant.html.
- 'databasename' : nom de la base
- 'username' : nom de l’utilisateur MySQL/MariaDB
- 'localhost' : hôte du serveur Drupal
- 'password' : mot de passe de l’utilisateur
4. Si succès, MySQL/MariaDB répond :
Query OK, 0 rows affected
5. Rechargez les privilèges :
FLUSH PRIVILEGES;
6. Quittez MySQL/MariaDB :
exit
7. Serveur répond :
Bye
Créer une base avec PostgreSQL
La base doit être créée avec encodage UTF-8 (Unicode).
1. Créer un utilisateur PostgreSQL
Ce n’est nécessaire que si vous n’avez pas d’utilisateur existant ou souhaitez en créer un dédié à Drupal. La commande crée un utilisateur « username » et demande un mot de passe :
createuser --pwprompt --encrypted --no-adduser --no-createdb username
Si succès, vous verrez « CREATE USER ».
2. Créer la base
Ce n’est nécessaire que si vous n’avez pas encore de base configurée ou voulez une base dédiée Drupal. La commande crée une base « databasename » appartenant à l’utilisateur créé :
createdb --encoding=UNICODE --owner=username databasename
Si succès, vous verrez « CREATE DATABASE ».