6.10 Droits initiaux

Après avoir installé MySQL, vous allez installer les premiers droits en exécutant l'utilitaire scripts/mysql_install_db. 4.7.1 Introduction à l'installation rapide. Le script scripts/mysql_install_db démarre le serveur mysqld, puis initialise les tables de droits, qui contiendront alors les droits suivants :

  • L'utilisateur MySQL root est créé, c'est le super utilisateur, investi de tous les droits. Les connexions au serveur MySQL doivent être faites depuis l'hôte local. NB: Le super utilisateur initial a un mot de passe vide ce qui fait que n'importe qui peut se connecter sans mot de passe, et disposer de tous les droits.
  • Un utilisateur anonyme est aussi créé, qui peut travailler librement dans les bases de données dont le nom commence par 'test_' et aussi 'test' . Les connections doivent être faites depuis l'hôte local. Cela signifie que quiconque se connecte depuis cet hôte peut être traité comme un utilisateur anonyme.
  • Aucun autre droit n'est attribué. Par exemple, les utilisateurs normaux ne peuvent pas utiliser mysqladmin shutdown ou mysqladmin processlist.

NB: Les droits par défaut sont différents sous Windows. 4.12.4 Faire tourner MySQL sous Win32.

Etant donné que votre installation initialle est très ouverte, la première chose à faire est d'attribuer un mot de passe au root. Vous pouvez le faire simplement avec la commande suivante :

shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(nouveau_mot_de_passe)
           WHERE user='root';
mysql> FLUSH PRIVILEGES;

Vous pouvez aussi utiliser la commande SET PASSWORD:

shell> mysql -u root mysql
mysql> SET PASSWORD FOR root=PASSWORD(nouveau_mot_de_passe);

Un autre moyen d'attribuer le mot de passe est de passer la commande mysqladmin:

shell> mysqladmin -u root password nouveau_mot_de_passe

Notez bien que si vous modifiez un mot de passe dans la table user directement avec la première méthode, vous devez faire relire les tables par le serveur avec la commande FLUSH PRIVILEGES : dans le cas contraire, les modifications ne seront pas prises en compte.

Une fois que le mot de passe du root a été affecté, vous devrez le fournir pour pouvoir vous connecter comme root.

Vous pouvez aussi laisser le mot de passe du root blanc, ce qui vous évitera d'avoir à le spécifier lors de la connexion, surtout si vous faites d'autres tests d'installation. Sinon, n'oubliez pas d'en assigner un lors du passege en production, pour ne pas créer des trous de sécurité.

Reportez vous au script scripts/mysql_install_db pour voir fonctionner les privilèges par défaut. Vous pouvez utiliser ce script comme base, pour ajouter de nouveaux utilisateurs.

Si vous voulez que les privilèges par défaut soient différents de ceux présentés jusqu'à présent, modifiez le script mysql_install_db avant de l'exécuter.

Pour recréer les tables de droits, effacez les fichiers ``*.frm'', ``*.ISM'' et ``*.ISD'' dans le dossier contenant le serveur mysql. (ce dossier est nommé ``mysql'' dans le dossier du serveur. Ce dernier est affiché si avec la commande mysqld -help. Alors, exécutez le script mysql_install_db, éventuellement après avoir l'avoir édité.

NOTE IMPORTANTE : pour les versions de MySQL antérieures à 3.22.10, vous ne DEVEZ PAS effacer les fichiers ``*.frm''. Si vous l'avez fait par accident, vous devez remettre une copie (tirée de la distribution MySQL) avant d'exécuter mysql_install_db.