Les mots de passe peuvent être assigné en ligne de commande
avec l'utilitaire mysqladmin
:
shell> mysqladmin -u user_name -h host_name password "newpwd"
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
:
mysql> SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');
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 = 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> GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY '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 :
Pour établir un mot de passe lors de la création d'un
compte, fournissez une valeur à la colonne
Password
:
shell>mysql -u root mysql
mysql>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 mysql
mysql>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 mysql
mysql>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 :
shell> mysql -u jeffrey -pbiscuit test
Access denied
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 :
Note :
PASSWORD()
n'effectue pas le chiffrement du
mot de passe de la même fa¸on qu'Unix. See
Section 5.6.1, « Nom d'utilisateurs MySQL et mots de passe ».
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.