
Ajout de privilèges
Pour pouvoir ajouter un privilège à un utilisateur, il faut posséder le privilège
GRANT OPTION
. Pour l'instant, seul l'utilisateur "root" le possède. Étant donné qu'il s'agit d'un privilège un peu particulier, nous n'en parlerons pas tout de suite. Connectez-vous donc avec "root" pour exécuter les commandes de cette partie.Syntaxe
La commande pour ajouter des privilèges à un utilisateur est la suivante :
GRANT privilege [(liste_colonnes)] [, privilege [(liste_colonnes)], ...]
ON [type_objet] niveau_privilege
TO utilisateur [IDENTIFIED BY mot_de_passe];
privilege
: le privilège à accorder à l'utilisateur (SELECT
,CREATE VIEW
,EXECUTE
,…) ;(liste_colonnes)
: facultatif - liste des colonnes auxquelles le privilège s'applique ;niveau_privilege
: niveau auquel le privilège s'applique (*.*, nom_bdd.nom_table,…) ;type_objet
: en cas de noms ambigus, il est possible de préciser à quoi se rapporte le niveau :TABLE
ouPROCEDURE
.
On peut accorder plusieurs privilèges en une fois : il suffit de séparer les privilèges par une virgule. Si l'on veut restreindre tout ou partie des privilèges à certaines colonnes, la liste doit en être précisée pour chaque privilège.
Si l'utilisateur auquel on accorde les privilèges n'existe pas, il sera créé. Auquel cas, il vaut mieux ne pas oublier la clause
IDENTIFIED BY
pour donner un mot de passe à l'utilisateur. Sinon, il pourra se connecter sans mot de passe.
Si l'utilisateur existe, et qu'on ajoute la clause
IDENTIFIED BY
, son mot de passe sera modifié.
Exemples
1. On crée un utilisateur
'john'@'localhost'
, en lui donnant les privilèges SELECT
, INSERT
etDELETE
sur la table elevage.Animal, et UPDATE
sur les colonnes nom, sexe et commentaires de la tableelevage.Animal.
GRANT SELECT,
UPDATE (nom, sexe, commentaires),
DELETE,
INSERT
ON elevage.Animal
TO 'john'@'localhost' IDENTIFIED BY 'exemple2012';
2. On accorde le privilège
SELECT
à l'utilisateur 'john'@'localhost'
sur la table elevage.Espece, et on modifie son mot de passe.
GRANT SELECT
ON TABLE elevage.Espece -- On précise que c'est une table (facultatif)
TO 'john'@'localhost' IDENTIFIED BY 'change2012';
3. On accorde à
'john'@'localhost'
le privilège de créer et exécuter des procédures stockées dans la base de données elevage.
GRANT CREATE ROUTINE, EXECUTE
ON elevage.*
TO 'john'@'localhost';
Révocation de privilèges
Pour retirer un ou plusieurs privilèges à un utilisateur, on utilise la commande
REVOKE
.
REVOKE privilege [, privilege, ...]
ON niveau_privilege
FROM utilisateur;
Exemple
REVOKE DELETE
ON elevage.Animal
FROM 'john'@'localhost';