5.5 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.5.5 Configurer les mots de passe
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. Noms d'utilisateurs MySQL et mots de passe .
|