Partie I
SQL de base
154
© Éditions Eyrolles
Vous devez posséder une table similaire. Il apparaît quatre accès potentiels. L’utilisateur vide
' ' correspond à une connexion anonyme. La machine désignée par « % » indique que la
connexion est autorisée à partir de tout site (en supposant qu’un client MySQL est installé et
qu’il est relié au serveur par TCP-IP). La machine désignée par « localhost » spécifie que
la connexion est autorisée en local.
Ici, la table fait état que l’accès anonyme (restreint toutefois à la base test , voir la section
Table mysql.db ) est permis en local et à partir de tout site, et que soutou comme root ne
peuvent se connecter qu’en local.
Modification d’un utilisateur
Le mot de passe d’un utilisateur peut être modifié sans parler de privilèges. Nous verrons plus
tard qu’il est possible de restreindre le nombre de requêtes ( SELECT ), de modifications
( UPDATE ), de connexions par heure et de connexions simultanées à un serveur.
Puisqu’il n’existe pas de commande ALTER USER , pour changer un mot de passe, il faut donc
modifier la table user par la seule commande SQL capable de le faire : UPDATE .
L’instruction suivante modifie le mot de passe de l’utilisateur soutou pour l’accès en local.
Notez l’utilisation de la fonction PASSWORD() qui code le mot de passe à affecter à la
colonne Password de la table user . Il est plus prudent d’utiliser ensuite FLUSH PRIVILEGES qui recharge les tables système de manière à rendre la manipulation effective sur
l’instant (un peu comme un COMMIT sur des données).
UPDATE mysql.user
WHERE User = 'soutou'
AND
Host = 'localhost';
FLUSH PRIVILEGES;
Une fois cette modification réalisée, si soutou tente une connexion avec son ancien mot de
passe, il vient l’erreur classique : « ERROR 1045 (28000): Access denied for user
'soutou'@'localhost' (using password: xx) » (xx valant YES si soutou se
connecte avec son ancien mot de passe, NO s’il n’en donne pas).
Chaque utilisateur peut changer son propre mot de passe à l’aide de cette instruction s’il en a
le privilège. Mais attention ! Le fait de lui donner ce droit (nous verrons plus loin comment le
faire) implique également qu’il puisse aussi modifier les mots de passe de ses copains, ainsi
que celui du root !
Renommer un utilisateur (RENAME USER)
Pour pouvoir renommer un utilisateur, vous devez posséder le privilège CREATE USER (ou le
privilège UPDATE sur la base de données mysql). La syntaxe SQL est la suivante :
RENAME USER utilisateur TO nouveauNom;
SET Password = PASSWORD('eyrolles')
SQL de base
154
© Éditions Eyrolles
Vous devez posséder une table similaire. Il apparaît quatre accès potentiels. L’utilisateur vide
' ' correspond à une connexion anonyme. La machine désignée par « % » indique que la
connexion est autorisée à partir de tout site (en supposant qu’un client MySQL est installé et
qu’il est relié au serveur par TCP-IP). La machine désignée par « localhost » spécifie que
la connexion est autorisée en local.
Ici, la table fait état que l’accès anonyme (restreint toutefois à la base test , voir la section
Table mysql.db ) est permis en local et à partir de tout site, et que soutou comme root ne
peuvent se connecter qu’en local.
Modification d’un utilisateur
Le mot de passe d’un utilisateur peut être modifié sans parler de privilèges. Nous verrons plus
tard qu’il est possible de restreindre le nombre de requêtes ( SELECT ), de modifications
( UPDATE ), de connexions par heure et de connexions simultanées à un serveur.
Puisqu’il n’existe pas de commande ALTER USER , pour changer un mot de passe, il faut donc
modifier la table user par la seule commande SQL capable de le faire : UPDATE .
L’instruction suivante modifie le mot de passe de l’utilisateur soutou pour l’accès en local.
Notez l’utilisation de la fonction PASSWORD() qui code le mot de passe à affecter à la
colonne Password de la table user . Il est plus prudent d’utiliser ensuite FLUSH PRIVILEGES qui recharge les tables système de manière à rendre la manipulation effective sur
l’instant (un peu comme un COMMIT sur des données).
UPDATE mysql.user
WHERE User = 'soutou'
AND
Host = 'localhost';
FLUSH PRIVILEGES;
Une fois cette modification réalisée, si soutou tente une connexion avec son ancien mot de
passe, il vient l’erreur classique : « ERROR 1045 (28000): Access denied for user
'soutou'@'localhost' (using password: xx) » (xx valant YES si soutou se
connecte avec son ancien mot de passe, NO s’il n’en donne pas).
Chaque utilisateur peut changer son propre mot de passe à l’aide de cette instruction s’il en a
le privilège. Mais attention ! Le fait de lui donner ce droit (nous verrons plus loin comment le
faire) implique également qu’il puisse aussi modifier les mots de passe de ses copains, ainsi
que celui du root !
Renommer un utilisateur (RENAME USER)
Pour pouvoir renommer un utilisateur, vous devez posséder le privilège CREATE USER (ou le
privilège UPDATE sur la base de données mysql). La syntaxe SQL est la suivante :
RENAME USER utilisateur TO nouveauNom;
SET Password = PASSWORD('eyrolles')
