| 5.6 Gestion des comptes utilisateurs de MySQL
 5 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française
 
 . Nom d'utilisateurs MySQL et mots de passe
 . Ajouter de nouveaux utilisateurs à MySQL
 . Supprimer un compte utilisateur de MySQL
 . Limiter les ressources utilisateurs
 ->Configurer les mots de passe
 . Garder vos mots de passe en lieu sûr
 . Utilisation des connexions sécurisées
 
 
 | 
  5.6.5 Configurer les mots de passe   
  Les mots de passe peuvent être assigné en ligne de commande avec l'utilitaire
 
mysqladmin
  : Le compte qui est remis à zéro par cette commande est celui pour lequel
une ligne de la table  
user
  qui correspond à la valeur  
user_name
  dans la 
colonne  
User
  et l'hôte client  
d'où vous vous connectez
  dans la colonne
 
Host
 .Un autre moyen pour assigner un mot de passe à un compte est d'utiliser la 
commande  
SET PASSWORD
  :| 
shell> mysqladmin -u user_name -h host_name password "newpwd"
 | 
 Seuls les utilisateurs  
root
  ayant des accès en écriture à la base  
mysql
 
peuvent changer les mots de passe des autres utilisateurs. Si vous n'êtes pas
connectés en tant qu'utilisateur anonyme, vous pouvez modifier votre propre mot
de passe en omettant la clause  
FOR
  :| 
mysql> SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');
 | 
 Vous pouvez aussi utiliser la commande  
GRANT USAGE
  au niveau global
( 
ON *.*
 ) pour assigner un mot de passe sans affecter les droits du compte :| 
mysql> SET PASSWORD = PASSWORD('biscuit');
 | 
 Même s'il est généralement préférable d'assigner un mot de passe en utilisant
une des méthodes précédentes, vous pouvez aussi modifier la table  
user
  
directement :| 
mysql> GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';
 | 
 
Pour établir un mot de passe lors de la création d'un compte, fournissez une valeur
à la colonne  
Password
  : 
| 
shell> mysql -u root mysqlmysql> INSERT INTO user (Host,User,Password)
 -> VALUES('%','jeffrey','biscuit');
 mysql> FLUSH PRIVILEGES;
 | 
Pour changer le mot de passe d'un compte existant, utilisez la commande
 
UPDATE
  pour modifier la valeur de la colonne  
Password
  : 
| 
shell> mysql -u root mysqlmysql> UPDATE user SET Password = PASSWORD('bagel')
 -> WHERE Host = '%' AND User = 'francis';
 mysql> FLUSH PRIVILEGES;
 | 
 
Lorsque vous assignez un mot de passe à un compte avec  
SET PASSWORD
 ,
 
INSERT
 , ou  
UPDATE
 , vous devez utiliser la fonction  
PASSWORD()
  
pour le chiffrer. La seule exception est que vous n'avez pas besoin d'utiliser
 
PASSWORD()
  si le mot de passe est vide.  
PASSWORD()
  est nécessaire
car la table  
user
  stocke les mots de passe sous forme chiffrée, et non en
texte clair. Si vous oubliez cela, vous risquez d'avoir des mots de passe de la forme : 
 | 
shell> mysql -u root mysqlmysql> INSERT INTO user (Host,User,Password)
 -> VALUES('%','jeffrey','biscuit');
 mysql> FLUSH PRIVILEGES;
 | 
 
Le résultat est que la valeur  
'biscuit'
  est stockée dans la 
colonne de mot de passe de la table  
user
 . Lorsque l'utilisateur  
jeffrey
 
tente de se connecter au serveur avec ce mot de passe, le client  
mysql
  
compare ce mot de passe chiffré avec sa version en clair stockée dans la table
 
user
 . Cependant, la version stockée est la valeur littérale de 
 
'biscuit'
 , et la comparaison échoue, le serveur rejette la connexion :
 Si vous modifiez les mots de passe en utilisant la commande 
 
GRANT ... IDENTIFIED BY
  ou la commande  
mysqladmin password
 ,
la fonction  
PASSWORD()
  n'est pas nécessaire. Ces commandes
assureront le chiffrement de votre mot de passe pour vous, ce qui vous
permet de spécifier le mot de passe de  
'biscuit'
  comme ceci :| 
shell> mysql -u jeffrey -pbiscuit testAccess denied
 | 
 
Note
  :  
PASSWORD()
  n'effectue pas le chiffrement du mot de
passe de la même façon qu'Unix.  Noms d'utilisateurs MySQL et mots de passe .
 |