Création et suppression
On l'a vu, il est possible de créer un utilisateur en lui donnant directement des privilèges, grâce à la commande
Cependant, il existe des commandes dédiées uniquement à la manipulation des utilisateurs. Ce sont ces commandes que nous allons voir maintenant. Nous reparlerons de
GRANT
.Cependant, il existe des commandes dédiées uniquement à la manipulation des utilisateurs. Ce sont ces commandes que nous allons voir maintenant. Nous reparlerons de
GRANT
plus tard.Syntaxe
Voici les requêtes à utiliser pour créer et supprimer un utilisateur :
-- Création
CREATE USER 'login'@'hote' [IDENTIFIED BY 'mot_de_passe'];
-- Suppression
DROP USER 'login'@'hote';
Utilisateur
L'utilisateur est donc défini par deux éléments :
- son login ;
- l'hôte à partir duquel il se connecte.
Login
Le login est un simple identifiant. Vous pouvez le choisir comme vous voulez. Il n'est pas obligatoire de l'entourer de guillemets, sauf s'il contient des caractères spéciaux comme - ou @. C'est cependant conseillé.
Hôte
L'hôte est l'adresse à partir de laquelle l'utilisateur va se connecter. Si l'utilisateur se connecte à partir de la machine sur laquelle le serveur MySQL se trouve, on peut utiliser 'localhost'. Sinon, on utilise en général une adresse IP ou un nom de domaine.
Exemples
CREATE USER 'max'@'localhost' IDENTIFIED BY 'maxisthebest';
CREATE USER 'elodie'@'194.28.12.4' IDENTIFIED BY 'ginko1';
CREATE USER 'gabriel'@'arb.brab.net' IDENTIFIED BY 'chinypower';
Il est également possible de permettre à un utilisateur de se connecter à partir de plusieurs hôtes différents (sans devoir créer un utilisateur par hôte) : en utilisant le joker %, on peut préciser des noms d'hôtes partiels, ou permettre à l'utilisateur de se connecter à partir de n'importe quel hôte.
Exemples
-- thibault peut se connecter à partir de n'importe quel hôte dont l'adresse IP commence par 194.28.12.
CREATE USER 'thibault'@'194.28.12.%' IDENTIFIED BY 'basketball8';
-- joelle peut se connecter à partir de n'importe quel hôte du domaine brab.net
CREATE USER 'joelle'@'%.brab.net' IDENTIFIED BY 'singingisfun';
-- hannah peut se connecter à partir de n'importe quel hôte
CREATE USER 'hannah'@'%' IDENTIFIED BY 'looking4sun';
Comme pour le login, les guillemets ne sont pas obligatoires, sauf si un caractère spécial est utilisé (comme le joker % par exemple). Notez que si vous ne précisez pas d'hôte, c'est comme si vous autorisiez tous les hôtes.
'hannah'@'%'
est donc équivalent à 'hannah'
.Renommer l'utilisateur
Pour modifier l'identifiant d'un utilisateur (login et/ou hôte), on peut utiliser
RENAME USER ancien_utilisateur TO nouvel_utilisateur
.
Exemple : on renomme max en maxime, en gardant le même hôte.
RENAME USER 'max'@'localhost' TO 'maxime'@'localhost';
Mot de passe
Le mot de passe de l'utilisateur est donné par la cause
IDENTIFIED BY
. Cette clause n'est pas obligatoire, auquel cas l'utilisateur peut se connecter sans donner de mot de passe. Ce n'est évidemment pas une bonne idée d'un point de vue sécurité. Évitez au maximum les utilisateurs sans mot de passe.
Lorsqu'un mot de passe est précisé, il n'est pas stocké tel quel dans la table mysql.user. Il est d'abord hashé, et c'est cette valeur hashée qui est stockée.
Modifier le mot de passe
Pour modifier le mot de passe d'un utilisateur, on peut utiliser la commande
Cependant, cette commande ne hashe pas le mot de passe automatiquement. Il faut donc utiliser la fonction
SET PASSWORD
(à condition d'avoir les privilèges nécessaires, ou d'être connecté avec l'utilisateur dont on veut changer le mot de passe).Cependant, cette commande ne hashe pas le mot de passe automatiquement. Il faut donc utiliser la fonction
PASSWORD()
.
Exemple
SET PASSWORD FOR 'thibault'@'194.28.12.%' = PASSWORD('basket8');