| 2.4 Procédure de post-installation
 2 Installer MySQL
 Manuel de Référence MySQL 4.1 : Version Française
 
 . Post-installation sous Windows
 . Procédures de post-installation sous Unix
 ->Création des premiers droits MySQL
 
 
 | 
  2.4.3 Création des premiers droits MySQL          
 
Le processus d'installation de MySQL passe par la création de la base de données
 
mysql
 , qui contient les tables de droits : 
 
Le script  
mysql_install_db
  démarre le serveur  
mysqld
  et initialise
les tables de droits, avec les paramètres suivants :
La distribution Windows contient des tables de droits pre-initialisées automatiquement.
Sous Unix, les tables de droits sont remplies par le programme  
mysql_install_db
 .
Certains assistants d'installation le font pour vous. Les autres vous imposent de
le faire manuellement. Pour plus de détails, voyez  Procédure de post-installation sur Unix .
 
Deux comptes MySQL  
root
  sont créés en tant qu'administrateurs ayant
tous les droits. Le mot de passe de l'utilisateur initial  
root
  est vide, ce qui permet
à n'importe qui de se connecter en tant que  
root
 
sans mot de passe
 , pour profiter de tous les droits. 
Sous Windows, un compte  
root
  permet de se connecter depuis l'hôte local,
et l'autre depuis n'importe quel hôte.
Sous Unix, les deux comptes  
root
  sont destinés à être utilisés depuis 
le compte local. Les connexions doivent être faîtes en spécifiant le nom
d'hôte  
localhost
 , ou le véritable nom d'hôte, ou l'adresse IP.
 
Deux comptes utilisateur anonyme sont créés, qui peuvent faire ce qu'ils 
veulent avec toutes les tables dans la base de données  
'test'
  
ou commençant par  
'test_'
 . 
Cela signifie qu'un utilisateur peut se connecter sans mot de passe 
et être traité comme un utilisateur anonyme. 
Sous Windows, un compte anonyme sert depuis l'hôte local.
Ce compte a tous les droits, comme  
root
 .
L'autre sert aux connexions depuis les hôtes, et a tous les droits pour 
les bases  
test
  ou commençant par  
test
 .
Sous Unix, les deux comptes anonymes servent depuis l'hôte local. 
Les connexions doivent être faîtes en spécificant le nom
d'hôte  
localhost
 , ou le véritable nom d'hôte, ou l'adresse IP.
Ces comptes ont tous les droits dans les bases  
test
  ou dont
le nom commence par  
test_
 . 
Comme indiqué, aucun des comptes initiaux n'a de mot de passe. Cela signifie
que votre installation MySQL n'est pas protégée jusqu'à ce que vous y remédiez : 
 
Si vous voulez éviter que les clients ne se connectent en tant qu'utilisateur
anonyme sans mot de passe, vous devez assigner des mots de passe à ces comptes,
ou bien les supprimer.
Vous devez assigner des mots de passe aux comptes  
root
 . 
Les instructions suivantes décrivent comment configurer les mots de passe
pour les comptes initiaux, en commençant par les comptes anonymes, puis pour
les comptes  
root
 .  Remplacez `` 
nouveau_mot
 '' dans les exemples
ci-dessous par le nouveau mot de passe que vous voulez utiliser. Ces instructions 
montrent aussi comment supprimer les comptes anonymes.
Vous pouvez différer le changement de mot de passe jusqu'à plus tard, pour
pouvoir utiliser cette configuration pour les tests. Cependant, n'oubliez pas
de le faire avant de mettre votre serveur en production. 
Pour assigner des mots de passe aux comptes anonymes, vous pouvez utiliser
les commandes  
SET PASSWORD
  et  
UPDATE
 .  Dans les deux cas,
assurez-vous de chiffrer les mots avec la fonction  
PASSWORD()
 .
Pour utiliser  
SET PASSWORD
  sur Windows, faîtes : Pour utiliser  
SET PASSWORD
  sur Unix, faîtes :| 
shell> mysql -u rootmysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('nouveau_mot');
 mysql> SET PASSWORD FOR ''@'%' = PASSWORD('nouveau_mot');
 | 
 Dans la seconde commande  
SET PASSWORD
 , remplacez  
host_name
 
par le nom de l'hôte du serveur. C'est le nom qui sera spécifié dans la colonne
 
Host
  de la ligne du compte  
root
 , et qui n'est pas  
localhost
 .
Si vous ne savez pas quel nom d'hôte c'est, utilisez cette commande avant
d'utiliser  
SET PASSWORD
  :| 
shell> mysql -u rootmysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('nouveau_mot');
 mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('nouveau_mot');
 | 
 Recherchez une ligne qui contient  
root
  dans la colonne  
User
  et
quelque chose d'autre que  
localhost
  dans la colonne  
Host
 . Puis,
utilisez la valeur de  
Host
  dans la seconde commande  
SET PASSWORD
 .L'autre moyen d'assigner des mots de passe à un compte anonyme est d'utiliser
la commande  
UPDATE
  pour modifier la table  
user
  directement. Connectez
vous en tant que  
root
  et envoyez une commande  
UPDATE
  qui assigne
une valeur à la colonne  
Password
  dans les lignes appropriée de la table
 
user
 . La procédure est la même sous Unix et sous Windows. La commande
suivante  
UPDATE
  met à jour le mot de passe pour les deux comptes en même temps :| 
mysql> SELECT Host, User FROM mysql.user;
 | 
 Après voir fait la mise à jour des mots de passe dans la table  
user
  avec
la commande  
UPDATE
 , vous devez demander au serveur de relire les tables de droits,
avec  
FLUSH PRIVILEGES
 . Sinon, les modifications ne seront pas prises en compte avant 
le prochain redémarrage du serveur.Si vous préférez supprimer les comptes anonymes, faîtes ceci  :| 
shell> mysql -u rootmysql> UPDATE mysql.user SET Password = PASSWORD('nouveau_mot')
 ->     WHERE User = '';
 mysql> FLUSH PRIVILEGES;
 | 
 La commande  
DELETE
  s'applique à Windows et Unix.
Sous Windows, si vous voulez supprimer uniquement les comptes anonymes
qui ont les mêmes droits que  
root
 , faîtes ceci :| 
shell> mysql -u rootmysql> DELETE FROM mysql.user WHERE User = '';
 mysql> FLUSH PRIVILEGES;
 | 
 Ce compte permet un accès anonyme avec les pleins droits : le supprimer
améliore la sécurité.| 
shell> mysql -u rootmysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
 mysql> FLUSH PRIVILEGES;
 | 
 
Vous pouvez assigner les mots de passe au compte  
root
  de nombreuses
façons. La discussion suivante montre trois méthodes : 
 
Utiliser la commande  
SET PASSWORD
Utiliser la commande en ligne  
mysqladmin
Utiliser la commande  
UPDATE
 
Pour assigner un mot de passe avec la commande  
SET PASSWORD
 , connectez
vous en tant que  
root
  et faites deux commandes  
SET PASSWORD
 .
Assurez vous de chiffrer le mot de passe avec  
PASSWORD()
 .
Pour Windows, faîtes ceci : Pour Unix, faîtes ceci :| 
shell> mysql -u rootmysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('nouveau_mot');
 mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD('nouveau_mot');
 | 
 Dans la seconde commande  
SET PASSWORD
 , remplacez  
host_name
 
par le nom de l'hôte du serveur. C'est le même nom que celui qui a été utilisé
pour les comptes anonymes.| 
shell> mysql -u rootmysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('nouveau_mot');
 mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('nouveau_mot');
 | 
 
Pour assigner un mot de passe à  
root
  en utilisant  
mysqladmin
 ,
exécutez les commandes suivantes :
 Ces commandes s'appliquent à Windows et à Unix. Dans la seconde commande,
remplacez  
host_name
  par le nom du serveur hôte. Les guillemets doubles
autour du mot de passe ne sont pas nécessaires, mais vous devez les utiliser
si vous avez des espaces ou d'autres caractères spéciaux.| 
shell> mysqladmin -u root password "nouveau_mot"shell> mysqladmin -u root -h host_name password "nouveau_mot"
 | 
 
Si vous utilisez un serveur d'une  
très
  vieille version de MySQL, la 
commande  
mysqladmin
  va échouer avec un message d'erreur : 
 
parse error near 'SET password'
 .  La solution à ce problème est de
changer la version du serveur MySQL.
Vous pouvez aussi utiliser  
UPDATE
  pour modifier directement la table  
user
 .
La commande  
UPDATE
  suivante assigne un mot de passe aux comptes  
root
 
en même temps : La commande  
UPDATE
  s'applique à Windows et à Unix.Après modification des mots de passe, vous devrez les fournir à chaque 
connexion au serveur. Par exemple, si vous voulez utiliser la commande 
 
mysqladmin
  pour éteindre le serveur, vous devez utiliser une commande
de cette forme :| 
shell> mysql -u rootmysql> UPDATE mysql.user SET Password = PASSWORD('nouveau_mot')
 ->     WHERE User = 'root';
 mysql> FLUSH PRIVILEGES;
 | 
 Note :
  si vous perdez votre mot de passe  
root
  après l'avoir configuré,
la procédure pour le remettre à zéro est présentée dans la section  Comment modifier un mot de passe Root oublié .Pour créer de nouveaux comptes, utilisez la commande  
GRANT
 . Pour
les instructions, voyez  Ajouter de nouveaux utilisateurs à MySQL .| 
shell> mysqladmin -u root -p shutdownEnter password: (enter root password here)
 | 
 |