Services webmasters
Partenaires
Jeux concours gratuits
 
Création des premiers droits MySQL
<<<
Ajouter de nouveaux utilisateurs à MySQL Limiter les ressources utilisateurs
>>>

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.5 Ajouter de nouveaux utilisateurs à MySQL

Vous pouvez ajouter des utilisateurs de deux façons différentes : en utilisant la commande GRANT ou en manipulant la table des droits de MySQL directement. La méthode préférée consiste à utiliser la commande GRANT , car elle est plus concise et qu'il y'a moins de risques d'erreurs. Syntaxe de GRANT et REVOKE .

Il y'a aussi beaucoup de programmes contribués comme phpmyadmin qui peuvent être utilisés pour créer et administrer les utilisateurs.

Les exemples suivants montrent comment utiliser le client mysql pour créer de nouveaux utilisateurs. Ces exemples supposent que les privilèges sont attribués en accord avec les valeurs par défaut discutées dans la section précédente. Cela signifie que pour effectuer des changements, vous devez être sur la même machine où mysqld tourne, vous devez vous connecter en tant qu'utilisateur MySQL root , et l'utilisateur root doit avoir le droit INSERT sur la base mysql et le droit d'administration RELOAD . Si vous avez changé le mot de passe de l'utilisateur root , vous devez le spécifier dans les commandes mysql ci-dessous.

Vous pouvez ajouter de nouveaux utilisateurs en utilisant des commandes GRANT :

shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
    ->     IDENTIFIED BY 'un_mot_de_passe' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
    ->     IDENTIFIED BY 'un_mot_de_passe' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
Ces commandes GRANT ajoutent trois nouveaux utilisateurs :
    monty
    Un super-utilisateur qui peut se connecter au serveur d'où il veut, mais qui doit utiliser le mot de passe 'un_mot_de_passe' pour le faire. Notez que nous devons exécuter une commande GRANT pour monty@localhost et monty@"%" . Si nous n'ajoutons pas l'entrée avec localhost , l'entrée concernant l'utilisateur anonyme pour localhost qui est créée par mysql_install_db prendra précédence lors de la connexion à partir de l'hôte local, car elle a une entrée plus spécifique pour la valeur du champ Host et de plus, elle vient en premier dans l'ordre de tri de la table user .
    admin
    Un utilisateur qui peut se connecter depuis localhost sans mot de passe et qui a les droits administratifs RELOAD et PROCESS . Cela permet à cet utilisateur d'exécuter les commandes mysqladmin reload , mysqladmin refresh , et mysqladmin flush-* , ainsi que mysqladmin processlist . Aucun droit lié aux bases de données n'est donné. (Ils peuvent l'êetre plus tard en utilisant d'autres instructions GRANT .)
    dummy
    Un utilisateur qui peut se connecter sans mot de passe, mais seulement à partir de l'hôte local. Les droits globaux sont tous à 'N' -le type de droit USAGE vous permet de créer un utilisateur démuni de privilèges. Il est supposé que vous lui assignerez les droits spécifiques aux bases de données plus tard.
Vous pouvez ajouter les mêmes droits d'accès aux utilisateurs en utilisant directement des requêtes INSERT puis en demandant au serveur de recharger les tables de droits :

shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('un_mot_de_passe'),
    ->          'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user VALUES('%','monty',PASSWORD('un_mot_de_passe'),
    ->          'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
    ->           Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
    ->                  VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;
Selon votre version de MySQL, vous pouvez avoir un nombre différent de valeurs 'Y' plus haut (les versions antérieures à la 3.22.11 possèdent moins de colonnes de privilèges). Pour l'utilisateur admin , la syntaxe d' INSERT étendue la plus lisible disponible depuis la version 3.22.11 est utilisée.

Notez que pour ajouter un super-utilisateur, vous avez juste besoin de créer une entrée dans la table user avec tous les champs de droits à 'Y' . Aucune entrée n'est requise dans les tables db et host .

Les colonnes de privilèges de la table user n'étaient pas renseignées explicitement dans la dernière requête INSERT (pour l'utilisateur dummy ), ses colonnes prennent donc la valeur par défaut, 'N' . C'est la même chose que ce que fait GRANT USAGE .

L'exemple suivant ajoute un utilisateur custom qui peut se connecter à partir des hôtes localhost , server.domain , et whitehouse.gov . Il ne pourra accéder à la base de données bankaccount qu'à partir de localhost , à la base expenses qu'à partir de whitehouse.gov , et à la base customer à partir des trois hôtes. Il utilisera le mot de passe stupid pour les trois hôtes.

Pour configurer les privilèges de cet utilisateur en utilisant des commandes GRANT , exécutez ce qui suit :

shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    ->     ON bankaccount.*
    ->     TO custom@localhost
    ->     IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    ->     ON expenses.*
    ->     TO custom@whitehouse.gov
    ->     IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    ->     ON customer.*
    ->     TO custom@'%'
    ->     IDENTIFIED BY 'stupid';
La raison pour laquelle nous faisons deux insertions pour l'utilisateur 'custom' est que nous voulons lui donner accès à MySQL à partir de la machine locale avec les sockets Unix et à partir de la machine distante 'whitehouse.gov' via TCP/IP.Pour régler les permissions d'accès en modifiant directement les tables de droits, exécutez ces commandes (notez l'appel à FLUSH PRIVILEGES à la fin) :

shell> mysql --user=root mysql
mysql> INSERT INTO user (Host,User,Password)
    -> VALUES('localhost','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
    -> VALUES('server.domain','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
    -> VALUES('whitehouse.gov','custom',PASSWORD('stupid'));
mysql> INSERT INTO db
    -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    ->  Create_priv,Drop_priv)
    -> VALUES
    -> ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
    -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    ->  Create_priv,Drop_priv)
    -> VALUES
    -> ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
    -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    ->  Create_priv,Drop_priv)
    -> VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;
Les trois premières requêtes INSERT ajoute les entrées dans la table user qui permettent l'iutilisateur custom à se connecter à partir de plusieurs hôtes avec le mot de passe donné, mais ne lui donnent aucun droit (tous les droits sont mis à la valeur par défaut qui est 'N' ). Les trois requêtes INSERT suivantes ajoutent des entrées dans la table db qui autorisent custom à utiliser les bases de données bankaccount , expenses , et customer , mais seulement s'il y accède à partir de l'hôte spécifié. Comme d'habitude, lorsqueles tables de droits sont modifiées directement, on doit demander au serveur des les recharger (avec FLUSH PRIVILEGES ) pour que les changements soient pris en compte.Si vous voulez donner un accès spécifique à un utilisateur à partir de n'importe quelle machine d'un domaine donné, vous pouvez utiliser la commande GRANT qui suit :

mysql> GRANT ...
    ->     ON *.*
    ->     TO monutilisateur@"%.mondomaine.com"
    ->     IDENTIFIED BY 'monmotdepasse';
Pour faire la même chose en modifiant directement la table de droits, faites :

mysql> INSERT INTO user VALUES ('%.mondomaine.com', 'monutilisateur',
    ->             PASSWORD('monmotdepasse'),...);
mysql> FLUSH PRIVILEGES;

<< Ajouter de nouveaux utilisateurs à MySQL >>
Création des premiers droits MySQL Gestion des comptes utilisateurs de MySQL Limiter les ressources utilisateurs
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -