|   | |
|     | |
|  |  6.11 Ajout d'un nouvel utilisateur MySQL
Vous pouvez ajouter des utilisateurs de deux manières différentes : en utilisant la commande  Ajout d'un nouvel utilisateur 
shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
           IDENTIFIED BY 'quelquechose' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
           IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
Ces commandes ajoutent 3 nouveaux utilisateurs 'quelquechose'pour ce faire. Notez l'utilisation de la commandeGRANTpour les deux formesmonty@localhostetmonty@"%". Si la ligne avec localhostn'est pas ajoutée l'utilisateur anonyme qui a été créé par le scriptmysql_install_dbaura priorité lors de la connexion, car il sera plus spécifique. Il faut donc l'ajouter nommément pour pouvoir donner les bons droits àmonty.localhostsans mot de passe, et qui a les droits administratifs de reload et process. Cela va lui permettre d'exécuter les utilitairesmysqladmin reload,mysqladmin refreshetmysqladmin flush-*, ainsi quemysqladmin processlist. Aucun droit lié aux bases de données ne sont donnés. Ils pourront être donnés plus tard, avec des commandesGRANT.localhost. Les privilèges globaux sont tous à'N'- le type spécialUSAGEvous permet de créer rapidement un utilisateur sans droits, et lui occtroyer plus tard.
Vous pouvez aussi ajouter ces informations avec des commandes  
shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('something'),
                'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user VALUES('%','monty',PASSWORD('something'),
                '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;
Suivant la version de MySQL, vous pouvez avoir un nombre différent de  
Notez que pour créer un super utilisateur, il vous suffit de créer une ligne dans la table  
La colonne de droit dans la table  
L'exemple suivant ajoute un utilisateur  
Pour donner ces droits à cet utilisateur, utilisez les commandes  
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';
Pour donner ces droits à cet utilisateur en accédant directement aux tables de droits, utilisez les commandes suivantes : 
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 insertions ajoutent des lignes dans la table  
Si vous désirez donner un droit spécifique à un utilisateur donnée, mais depuis n'importe quel hôte, utilisez la commande  
mysql> GRANT ...
           ON *.*
           TO myusername@"%.mydomainname.com"
           IDENTIFIED BY 'mypassword';
Pour faire la même chose avec une attaque directe des tables, faites ceci : 
mysql> INSERT INTO user VALUES ('%.mydomainname.com', 'myusername',
           PASSWORD('mypassword'),...);
mysql> FLUSH PRIVILEGES;
Vous pouvez aussi utiliser  |