Introduction
Vous possédez plusieurs utilisateurs qui, dans l’avenir, devront effectuer les mêmes tâches et qui doivent, donc, avoir les mêmes privilèges ? Vous savez gérer les privilèges pour un utilisateur (voir cet article) mais vous souhaitez le faire pour plusieurs utilisateurs et tout cela, d’un seul coup ?
Ce billet pourra vous être utile dans ces quelques exemples. En effet, nous allons, dans cet article, aborder les rôles en MySQL et comment les gérer au mieux.
Les Rôles : quésako ?
Tout comme les privilèges, les rôles permettent de restreindre ou d’augmenter l’accès à certains objets de nos bases de données à nos utilisateurs. En fait, un ROLE est un ensemble de privilèges qui peut être attribué à plusieurs utilisateurs de façon simultanée. Cela permet de gérer les privilèges de vos utilisateurs de façon très rapide et cela permet d’éviter les erreurs involontaires. En effet, le fait de répéter plusieurs fois la même action (attribution des mêmes privilèges à plusieurs utilisateurs) peut entraîner une déconcentration et donc, peut augmenter la probabilité de faire une mauvaise manipulation ou une erreur.
Création d’un rôle
Lors de la création d’un rôle, vous n’avez qu’à le nommer.
La syntaxe pour la création d’un rôle est très simple :
CREATE ROLE nom_du_rôle;
Par exemple, si nous voulons créer notre rôle « Admin » :
CREATE ROLE Admin;
Attribuer des privilèges à un rôle
Maintenant que votre rôle existe, il ne vous reste plus qu’à lui attribuer des privilèges.
Voici la syntaxe à utiliser :
GRANT privilège(s)_à_attribuer
TO rôle_cible;
Reprenons notre rôle « Admin » précédemment créé, si nous souhaitons le « GRANTER » des privilèges CREATE TABLE, CREATE VIEW, CREATE USER et CREATE SESSION:
GRANT create table, create view, create user, create session
TO Admin;
Attribuer un Rôle
Notre rôle existe et a été « GRANTER », nous pouvons maintenant l’attribuer à un utilisateur de notre Base De Données MySQL. Celui-ci recevra tous les privilèges de notre rôle.
La syntaxe a utiliser est la suivante :
GRANT rôle_à_attribuer
TO utilisateur(s)_cible(s);
Imaginons que nous possédions trois utilisateurs (Lolokai, Son_Lolokai et Father_Lolokai) et que nous voulions que chacun d’entre eux possède CREATE TABLE et CREATE VIEW comme privilèges. Il n’est pas utile de répéter trois fois cette requête (vu dans ce billet) :
GRANT privilège(s)_système_attribué(s)
TO utilisateur(s)_visé(s)
(WITH ADMIN OPTION)
Il vous suffit de leur attribuer le rôle « Admin » que nous avons créé :
GRANT Admin
TO Lolokai, Son_Lolokai, Father_Lolokai;
Révoquer l’attribution d’un rôle à un utilisateur
Vous avez aussi la possibilité de révoquer l’attribution d’un rôle à un utilisateur.
Voici la syntaxe à utiliser :
REVOKE rôle_à_révoquer_de_l_utilisateur
FROM utilisateur(s)_cible(s);
Si l’on ne souhaite plus que Son_Lolokai soit « Admin » :
REVOKE Admin
FROM Son_Lolokai;
Supprimer un rôle
La syntaxe pour supprimer un rôle est aussi simple que celle pour en créer un :
DROP ROLE nom_du_rôle;
Donc, pour supprimer « Admin » :
DROP ROLE Admin;
Conclusion
Ce billet est maintenant terminé. Nous avons vu ce qu’est un Rôle en MySQL. De plus, nous avons appris à les gérer (Créer/attribuer des rôles/Révoquer/Supprimer un rôle et l’attribuer à un utilisateur).
Si vous avez la moindre question ou remarque, n’hésiter pas. Je serai ravi d’y répondre.