Privileges:¶
Le contrôle d'accès de MySQL se fait en deux étapes :
- Etape 1 : Le serveur vérifie que vous êtes autorisé à vous connecter.
- Etape 2 : En supposant que vous pouvez vous connecter, le serveur vérifie chaque requête que vous soumettez, pour vérifier si vous avez les droits suffisants pour l'exécuter. Par exemple, si vous sélectionnez des droits dans une table, ou effacez une table, le serveur s'assure que vous avez les droits de SELECT pour cette table, ou les droits de DROP, respectivement.
Les commandes les plus courantes:¶
- ALL PRIVILEGES – Donne à l'utilisateur de MySQL un total accès à une base de données désignée (ou un accès global à l'ensemble du système si aucune base de données n'est sélectionnée)
- CREATE – Permet aux utilisateurs de créer des bases de données/tableaux
-
ALTER –
-
SELECT – Permet aux utilisateurs de récupérer des données
-
INSERT – Permet aux utilisateurs d’ajouter de nouvelles entrées dans les tableaux
-
UPDATE – Permet aux utilisateurs de modifier les entrées existantes dans les tableaux
-
DELETE – Permet aux utilisateurs de supprimer les entrées de la tableau
-
DROP – Permet aux utilisateurs de supprimer des bases de données/tableaux entiers
- GRANT OPTION – Permet d'accorder ou de supprimer les privilèges des autres utilisateurs
Liste des commandes:¶
GRANT
SELECT, INSERT, DROP, UPDATE, DELETE, CREATE, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR
ON *.* TO
Voir les droits de l'utilisateur courant:¶
MariaDB [(none)]> SHOW GRANTS;
+----------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED VIA mysql_native_password USING '*1111111111111111111111111111111111' OR unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------+
Voir les droits d'un utilisateur 'mysqlbackupuser' sur un host:¶
MariaDB [(none)]> SHOW GRANTS FOR 'mysqlbackupuser'@'localhost';
+----------------------------------------------------------------------------------------------+
| Grants for mysqlbackupuser@localhost |
+----------------------------------------------------------------------------------------------+
| GRANT SELECT, LOCK TABLES ON *.* TO `mysqlbackupuser`@`localhost` IDENTIFIED BY PASSWORD '*22222222222222222222222222222222222222222' |
+----------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)
Si le host n'est pas précisé, il s'agit de '%'
MariaDB [(none)]> SHOW GRANTS FOR 'mysqlbackupuser';
ERROR 1141 (42000): There is no such grant defined for user 'mysqlbackupuser' on host '%'
Les droits peuvent être différents d'une base à l'autre:
MariaDB [(none)]> SHOW GRANTS FOR 'the_user'@'localhost';
+----------------------------------------------------------------------------------------------+
| Grants for the_user@localhost |
+----------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `the_user`@`localhost` IDENTIFIED BY PASSWORD '*201716EF6717C367868F777B9C6E17796F19F379' |
|
| GRANT ALL PRIVILEGES ON `bdd`.* TO `the_user`@`localhost` |
+----------------------------------------------------------------------------------------------+
Donner tous les droits à l'utilisateur:¶
-sur une base:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mydatabase.* TO the_user@localhost;
Query OK, 0 rows affected (0.029 sec)
-sur le tout le serveur:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO the_user@localhost;
Query OK, 0 rows affected (0.025 sec)
Pour que les changements prennent effets:
MariaDB [(none)]> FLUSH PRIVILEGES;
Révocation de privilèges:¶
mysql> REVOKE ALL PRIVILEGES;
MariaDB [(none)]> REVOKE ALL PRIVILEGES ON *.* FROM the_user@localhost;
Query OK, 0 rows affected (0.023 sec)
mysql> REVOKE <PRIVILEGES>;
MariaDB [(none)]> SHOW GRANTS FOR 'the_user'@'localhost';
+----------------------------------------------------------------------------------------------+
| Grants for the_user@localhost |
+----------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `the_user`@`localhost` IDENTIFIED BY PASSWORD '*201716EF6717C367868F777B9C6E17796F19F379' |
+----------------------------------------------------------------------------------------------+
On supprime les privilèges DROP et SHUTDOWN:
MariaDB [(none)]> REVOKE DROP, SHUTDOWN ON *.* FROM the_user@localhost;
Query OK, 0 rows affected (0.022 sec)
MariaDB [(none)]> SHOW GRANTS FOR 'the_user'@'localhost';
+----------------------------------------------------------------------------------------------+
| Grants for the_user@localhost |
+----------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, RELOAD, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE HISTORY, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN, BINLOG ADMIN, BINLOG REPLAY, SLAVE MONITOR ON *.* TO `the_user`@`localhost` IDENTIFIED BY PASSWORD '*201716EF6717C367868F777B9C6E17796F19F379' |
+----------------------------------------------------------------------------------------------+
Dernière mise à jour:
September 15, 2021