jeudi 13 mars 2014

22 - Gestion des utilisateurs

0 commentaires


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 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 :
1-- Création
2CREATE USER 'login'@'hote' [IDENTIFIED BY 'mot_de_passe'];
3
4-- Suppression
5DROP 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
1CREATE USER 'max'@'localhost' IDENTIFIED BY 'maxisthebest';
2CREATE USER 'elodie'@'194.28.12.4' IDENTIFIED BY 'ginko1';
3CREATE 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
1-- thibault peut se connecter à partir de n'importe quel hôte dont l'adresse IP commence par 194.28.12.
2CREATE USER 'thibault'@'194.28.12.%' IDENTIFIED BY 'basketball8';
3
4-- joelle peut se connecter à partir de n'importe quel hôte du domaine brab.net
5CREATE USER 'joelle'@'%.brab.net' IDENTIFIED BY 'singingisfun';
6
7-- hannah peut se connecter à partir de n'importe quel hôte
8CREATE 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.
1RENAME 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 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

1SET PASSWORD FOR 'thibault'@'194.28.12.%' = PASSWORD('basket8');

Leave a Reply