Data Control Language (DCL)
Le langage de contrôle des données (Data Control Language - DCL) est le sous-langage responsable des tâches administratives de contrôle de la base de données elle-même.
Le DCL permet notamment l’octroi et la révocation des permissions et autorisations de base de données pour les utilisateurs
En SQL, cela correspond aux commandes :
CREATE USER
: création d’un nouvel utilisateurGRANT
: octroi de permissions. Par exemple,GRANT SELECT ON uneTable TO unUtilsateur
permet à l’utilisateurunUtilsateur
d’effectuer desSELECT
sur la tableuneTable
REVOKE
: révocation de permissions. Par exemple,REVOKE SELECT ON uneTable FROM unUtilsateur
retire la permission de lire la tableuneTable
à l’utilisateurunUtilsateur
DENY
: refus de permissions. Par exemple,DENY SELECT ON uneTable TO unUtilsateur
refuse la permission de lire la tableuneTable
à l’utilisateurunUtilsateur
CREATE USER
CREATE USER
est la commande SQL responsable de la création d’un nouvel utilisateur de base de données. Par exemple, pour créer un nouvel utilisateur nommé Mark, nous ferions quelque chose comme ceci :
1CREATE USER 'mark'@'localhost' IDENTIFIED BY 'motDePasse'
GRANT
GRANT
est la commande SQL responsable de l’octroi de permissions à un utilisateur de base de données.
Si nous voulions accorder la permission de consulter la table Comptes
à un utilisateur nommé Mark, nous ferions quelque chose comme ceci :
1GRANT SELECT2ON `Comptes`3TO 'mark'@'localhost'
GRANT ALL PRIVILEGES
Il est possible de donner toutes les permissions sur toutes les tables d’une base de données à un utilisateur.
Par exemple, pour donner toutes les permissions sur la base de données Boutique
à l’utilisateur mark
, on peut faire :
1GRANT ALL PRIVILEGES2ON `Boutique`.*3TO 'mark'@'localhost'
REVOKE
REVOKE
est la commande SQL responsable de la révocation de permissions à un utilisateur de base de données.
Si nous voulions retirer la permission d’effectuer des SELECT
sur la table Comptes
à l’utilisateur Mark, nous ferions quelque chose comme ceci :
1REVOKE SELECT2ON `Comptes`3FROM 'mark'@'localhost'
DENY
DENY
est la commande SQL responsable du refus de permissions à un utilisateur de base de données.
Si nous voulions refuser la permission de consulter la table Comptes
à l’utilisateur Mark, nous ferions quelque chose comme ceci :
1DENY SELECT2ON `Comptes`3TO 'mark'@'localhost'
Différences entre REVOKE et DENY
REVOKE
: révoque une permission précédemment accordéeDENY
: refuse une permission, même si elle a été accordée précédemment
Permissions au niveau des colonnes
Il est possible de donner des permissions au niveau des colonnes. Par exemple, pour donner la permission de lire la colonne nom
de la table Comptes
à l’utilisateur mark
, on peut faire :
1GRANT SELECT (nomColonne)2ON `nomTable`3TO 'nomUtilisateur'@'localhost'
Permissions en lecture et écriture
Il est possible de donner des permissions en lecture et écriture. Par exemple, pour donner la permission de lire et écrire sur la table Comptes
à l’utilisateur mark
, on peut faire :
Donner les permissions SELECT
, INSERT
, UPDATE
et DELETE
sur la table Comptes
à l’utilisateur mark
:
1GRANT SELECT, INSERT, UPDATE, DELETE2ON `Comptes`3TO 'mark'@'localhost'
Donner toutes les permissions sur la table Comptes
à l’utilisateur mark
:
1GRANT ALL PRIVILEGES2ON `Comptes`3TO 'mark'@'localhost'
Retirer la permission de supprimer des lignes de la table Comptes
à l’utilisateur mark
:
1REVOKE DELETE2ON `Comptes`3FROM 'mark'@'localhost'
Exercice
- Créer un nouvel utilisateur
mark
sur le serveurlocalhost
avec le mot de passemotDePasse
- Donner la permission de lire la table
Clients
à l’utilisateurmark
- Donner la permission de lire et supprimer des lignes sur la table
Commandes
à l’utilisateurmark
Résumé
- Le Data Control Language (DCL) est le sous-langage responsable des tâches administratives de contrôle de la base de données elle-même
- Les commandes principales du DCL sont
GRANT
,REVOKE
etDENY
- Il est possible de donner des permissions au niveau des colonnes et des tables
- Il est possible de donner des permissions en lecture et écriture