Privilèges
Les privilèges sont les droits de lecture, modification, suppression, etc. accordés à un utilisateur ou un groupe d'utilisateurs.

Important
La notion d'utilisateur du SGBD n'est pas celle de l'application.
L'utilisateur du SGBD est un utilisateur de connexion au SGBD. L'utilisateur d'une application est un utilisateur de connexion à l'application.
En fonction des droits de l'utilisateur applicatif, l'application utilisera un compte de connexion ou un autre pour se connecter au SGBD.
Par exemple : tous les comptes distants standards utiliseront l'utilisateur SGBD "userInscrit" en lecture seule sur la table des articles alors que le gestionnaire distant aura "distantAdmin" et pourra créer et modifier les articles.
Voir la gestion des droits : CIMS (création, interrogation, modification et suppression)
Les privilèges sont accordés sur :
- L'usage d'une clause principale :
- Sur un certain périmètre : bases, tables, champs
- Pour un utilisateur connecté à partir d'une adresse particulière ou générique, souvent localhost ou *
Les requêtes suivantes créent un utilisateur, un groupe et leur donne des droits variés. Enfin, ceux-ci sont révoqués (supprimés) et les utilisateurs/groupes sont supprimés.
Rôle | SQL |
---|---|
Créer l'utilisateur Toto connecté de partout (%).
Ok, le mot de passe n'est pas terrible. mais on est en test.
Certains SGBD peuvent aussi gérer des groupes pour centraliser la gestion des privilèges. Les utilisateurs appartiennent alors à des groupes de privilèges. Cette méthode est un peu désuette car la gestion des privilèges est souvent déporté sur l'application |
CREATE USER 'toto'@'%' IDENTIFIED BY 'toto,123;'; CREATE GROUP 'StdDevelopper'; ALTER GROUP 'StdDevelopper' ADD USER 'toto'@'%' ; |
Accorder des privilèges à l'utilisateur Toto, sur toutes les bases et tables (*.*).
Privilèges de développeur moyen : tout les LID/LMD + quelques privilèges du LDD.
|
GRANT SELECT,INSERT,UPDATE,DELETE, CREATE,DROP,ALTER ON *.* TO 'toto'@'%'; |
Accorder des privilèges à l'utilisateur Toto, sur un champ d'une table donnée d'une base donnée
Ce type de privilège est relativement rare car parfois trop précis et alors géré par l'application.
Cependant, au niveau des tables, il apporte de la sécurité (Bloc3). |
GRANT SELECT (`id`) ON `gescom`.`gc_article` TO 'toto'@'%'; ALTER USER 'toto'@'%' ; -- mettre à jour l'utilisateur (opt) |
Accorder le privilège de transmettre ses privilèges |
GRANT SELECT ON *.* TO 'toto'@'%' WITH GRANT OPTION; |
Recharger les privilèges du serveur. |
FLUSH PRIVILEGES ; |
Rôle | SQL |
---|---|
Supprimer tous les privilèges. Supprimer aussi GRANT et donner des privilèges minima (USAGE)
Les privilèges particuliers sont aussi supprimés ici.
|
REVOKE ALL PRIVILEGES ON *.* FROM 'toto'@'%' REVOKE GRANT OPTION ON *.* FROM 'toto'@'%'; GRANT USAGE ON *.* TO 'toto'@'%'; |
Supprimer l'utilisateur |
DROP USER 'toto'@'%'; DROP GROUP 'StdDevelopper'; |
Recharger les privilèges du serveur. |
FLUSH PRIVILEGES ; |
Comming soon
Voir aussi ce lien vers MySQL::GRANT syntaxe