MYSQL - Attribution de droits utilisateurs MySQL : Différence entre versions

De PedroWiki
 
(Aucune différence)

Version actuelle datée du 5 mars 2009 à 15:56

Introduction

Cet article a pour but de donner une méthode simple d'attribution de droits d'accès à MySQL pour un utilisateur lambda.

L'exemple ci-dessous s'applique à tous les cas de figure nécessitant la création d'utilisateurs MySQL et l'attribution de droits d'accès au serveur de base de données.

Dans l'exemple ci dessous, l'utilisateur est toto, le mot de passe toto et les droits sont très larges (mêmes droits que le superutilisateur).

Méthode

Se connecter au SGBD avec un compte superutilisateur:
root@ubuntu:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.0.45-Debian_1ubuntu3-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
Sélectionner la base mysql pour modification:
mysql> use mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
A partir de là, 2 méthodes

Méthode rapide

La méthode sauvage en recopiant les champs de l'enregistrement correspondant au superutilisateur:
On autorise les accès de l'utilisateur toto depuis la passerelle:
mysql> INSERT INTO `user` VALUES ('192.168.145.1','toto',PASSWORD('toto'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',,,,,0,0,0,0);
On  autorise les accès depuis l'adresse IP de localhost:
mysql> INSERT INTO `user` VALUES ('127.0.0.1','toto',PASSWORD('toto'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',,,,,0,0,0,0);
On  autorise les accès depuis localhost:
mysql> INSERT INTO `user` VALUES ('localhost','toto',PASSWORD('toto'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',,,,,0,0,0,0);
On  autorise les accès depuis le nom du serveur:
mysql> INSERT INTO `user` VALUES ('ubuntu','toto',PASSWORD('toto'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',,,,,0,0,0,0);
On applique les modifications faite dans la table user au SGBD et à son mécanisme d'authentification:
mysql> flush privileges ;

Méthode propre

Une méthode plus propre est d'utiliser la commande SQL GRANT permettant d'attribuer des droits à un utilisateur sur des tables, des bases, etc.

L'idée est de donner des droits à un utilisateur, ce qui a pour effet de créer l'utilisateur s'il n'existe pas, et de complèter son jeu de droits par la suite.

mysql> GRANT all on base.table to user@host identified by 'password';
mysql> GRANT <droits> on base.table to user@host identified by 'password';

NB: Dans ce cas de figure, le mot de passe est à entrer en clair, sans traduction par la commande PASSWORD.

NB: Il n'est pas obligatoire de donner directement un mot de passe dans la commande GRANT, cela peut se faire par la commande SET PASSWORD

NB: Il est à noter qu'il est possible d'attribuer des mots de passe différents pour un même utilisateur en fonction de l'hôte depuis lequel il accède au SGBD.

Liens utiles

La documentation officielle de MySQL 5

Les droits disponibles sous MySQL

Création d'un utilisateur MySQL

HOWTO Création d'un utilisateur MySQL