4.3 Gestion des comptes utilisateurs de MySQL
4 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Syntaxe de GRANT et REVOKE . Nom d'utilisateurs MySQL et mots de passe . Quand les modifications de privilèges prennent-ils effets ? . Création des premiers droits MySQL . Ajouter de nouveaux utilisateurs à 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
|
4.3.7 Configurer les mots de passe
Dans la plupart des cas, vous devez utiliser la commande
GRANT
pour
configurer les utilisateurs et leur mot de passe. Les explications suivantes
s'adressent donc aux utilisateurs avancés. Syntaxe de
GRANT
et
REVOKE
.
Les exemples des sections précédentes illustrent un principe important :
lorsque vous stockez un mot de passe important avec les commandes
INSERT
ou
UPDATE
,
vous devez utiliser la fonction
PASSWORD()
pour le chiffrer. Ceci est dû au fait
que la table
user
stocke les mots de passe sous une forme chiffrée,
et non pas en texte clair. Si vous oubliez cela, vous risquez de configurer
vos mots de passe comme ceci :
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
chiffre ce mot de passe avec la fonction
PASSWORD()
, génère un
vecteur d'identification basé sur la version
chiffrée
du mot de passe
et un nombre aléatoire, obtenu du serveur, puis envoie le tout au serveur.
Le serveur utilise la valeur du mot de passe
password
dans la table
user
(ce qui
n'est pas la valeur chiffrée
de
'biscuit'
)
pour effectuer la recherche et comparer les résultats.
La comparaison échoue et le serveur rejette la connexion :
shell> mysql -u jeffrey -pbiscuit test Access denied
|
Les mots de passe doivent donc être chiffrés lors de leur insertion dans la
table
user
. Aussi les commandes
INSERT
doivent être spécifiées comme
ceci :
mysql> INSERT INTO user (Host,User,Password) -> VALUES('%','jeffrey',PASSWORD('biscuit'));
|
Vous devez aussi utiliser la fonction
PASSWORD()
lorsque vous utilisez la commande
SET PASSWORD
:
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
|
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 :
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
|
or
shell> mysqladmin -u jeffrey password biscuit
|
Note
:
PASSWORD()
n'effectue pas le chiffrement du mot de
passe de la même façon qu'Unix. Il ne faut pas supposer que si vos
mots de passe Unix et MySQL sont les mêmes, la fonction
PASSWORD()
retournera la même valeur que celle qui est stockée dans le fichier de mots
de passe d'UNIX. Noms d'utilisateurs MySQL et mots de passe .
|