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 commande GRANT pour les deux formes monty@localhost et monty@"%" . Si la ligne avec localhost n'est pas ajoutée l'utilisateur anonyme qui a été créé par le script mysql_install_db aura 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 .
localhost sans mot de passe, et qui a les droits administratifs de reload et process. Cela va lui permettre d'exécuter les utilitaires mysqladmin reload , mysqladmin refresh et mysqladmin flush-* , ainsi que mysqladmin processlist . Aucun droit lié aux bases de données ne sont donnés. Ils pourront être donnés plus tard, avec des commandes GRANT .
localhost . Les privilèges globaux sont tous à 'N' - le type spécial USAGE vous 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 |