Cours MySQL – Grant / Revoke
Dans ce cours nous allons voir à quoi sert l’instruction « GRANT » et « REVOKE » dans MySQL. Pour cela, nous allons présenter les différentes options de ces instructions et ensuite nous allons les utiliser dans un scénario de test.
Table des matières
ToggleEn MySQL, la commande GRANT est utilisée pour accorder des privilèges d’accès à des utilisateurs sur des bases de données, des tables ou d’autres objets dans le système de gestion de base de données (SGBD).
En comparaison, la commande REVOKE est utilisée pour révoquer des privilèges précédemment accordés à un utilisateur dans MySQL.
Voici une liste des principales options disponibles avec la commande GRANT et REVOKE :
Privilèges :
ALL PRIVILEGES
: Tous les privilèges disponibles.CREATE
: Autorise la création d’objets (bases de données, tables).DROP
: Autorise la suppression d’objets.DELETE
: Autorise la suppression de données.INSERT
: Autorise l’insertion de données.SELECT
: Autorise la lecture de données.UPDATE
: Autorise la mise à jour de données.GRANT OPTION
: Autorise à accorder ou révoquer des privilèges.Portée :
ON *.*
: Toutes les bases de données et tous les objets du serveur.ON database.*
: Toutes les tables d’une base de données spécifique.ON database.table
: Une table spécifique dans une base de données.Utilisateur et hôte :
TO 'utilisateur'@'hôte'
(pour GRANT
) : Spécifie l’utilisateur et l’hôte recevant les privilèges.FROM 'utilisateur'@'hôte'
(pour REVOKE
) : Spécifie l’utilisateur et l’hôte dont les privilèges seront révoqués.Révoquer avec option CASCADE (uniquement pour REVOKE
) :
CASCADE
: Révoque les privilèges récursivement, y compris ceux accordés par l’utilisateur à d’autres utilisateurs.Dans ce scénario nous allons créer un autre compte, une nouvelle base de donnée et accorder au nouvel utilisateur certains privilèges mais aussi les révoquer.
Pour créer un utilisateur on utilise tout d’abord la commande mysql dans le terminal en tant que root. Ensuite une fois dans le terminal mysql on utilise la commande create user, voici un exemple :
create user "userTest"@"localhost" IDENTIFIED BY "test"
Cette commande permet de créer l’utilisateur userTest qui peut se connecter uniquement quand il est sur la machine locale et dont le mot de passe est test.
Pour notre situation, je vais créer un utilisateur pour mon binôme Sullivan voici le code :
On peut remarquer que la commande a bien fonctionné grâce à la ligne : Query OK, 0 rows affected (0.001 sec). Pour récapituler la commande que nous avons effectué, l’utilisateur sullivan dont le mot de passe est btsinfo a été créer. Il ne peut que se connecter sur le poste qui possède l’ip 10.229.187.252 .
Pour la suite nous allons créer une base de donnée et donner les droits de celle-ci à l’utilisateur sullivan.
Cette commande a permis la création de la table bdPartage et le don de tous les droits sur celle-ci à l’utilisateur sullivan.
Maintenant que l’utilisateur sullivan et la base de donnée bdPartage à été créée nous allons tester tout ceci en nous connectant à l’aide de la machine 10.229.187.252 à la base de donnée à distance.
Pour cela il faut accorder l’accès à distance, pour cela on commente la ligne bind-address dans le fichier /etc/mysql/mariadb.conf.d/50-server.cnf
Ensuite à partir de la machine de Sullivan je me connecte à la mienne à l’aide de la commande :
mysql -h « ip de la machine voulu » -u « login » -p
Comme on peut le voir j’ai bien réussis à me connecter à distance à la base de donnée. On va essayer de regarder les bases de données auxquelles l’utilisateur sullivan a accès à l’aide de la commande SHOW DATABASES; voici le résultat.
Voici le résultat quand c’est sullivan qui exécute la commande :
Et voici le résultat quand c’est moi qui exécute la commande :
Comme on peut le voir j’ai accès à beaucoup plus de base de donnée que sullivan ce qui montre que tout fonctionne. On va maintenant essayer de revoquer les droits de sullivan sur la base de donnée bdPartage pour être sur que tout fonctionne.
Pour REVOKE les droits de sullivan voici la commande :
Et voici le résultat du côté de sullivan, il n’a plus accès à la base de donnée bdPartage.