Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

Data Control Language (DCL)

Icône Présentation
1 / 1

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 utilisateur
  • GRANT : octroi de permissions. Par exemple, GRANT SELECT ON uneTable TO unUtilsateur permet à l’utilisateur unUtilsateur d’effectuer des SELECT sur la table uneTable
  • REVOKE : révocation de permissions. Par exemple, REVOKE SELECT ON uneTable FROM unUtilsateur retire la permission de lire la table uneTable à l’utilisateur unUtilsateur
  • DENY : refus de permissions. Par exemple, DENY SELECT ON uneTable TO unUtilsateur refuse la permission de lire la table uneTable à l’utilisateur unUtilsateur

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 :

CREATE 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 :

GRANT SELECT
ON `Comptes`
TO '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 :

GRANT ALL PRIVILEGES
ON `Boutique`.*
TO '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 :

REVOKE SELECT
ON `Comptes`
FROM '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 :

DENY SELECT
ON `Comptes`
TO 'mark'@'localhost'

Différences entre REVOKE et DENY

  • REVOKE : révoque une permission précédemment accordée
  • DENY : 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 :

GRANT SELECT (nomColonne)
ON `nomTable`
TO '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 :

GRANT SELECT, INSERT, UPDATE, DELETE
ON `Comptes`
TO 'mark'@'localhost'

Donner toutes les permissions sur la table Comptes à l’utilisateur mark :

GRANT ALL PRIVILEGES
ON `Comptes`
TO 'mark'@'localhost'

Retirer la permission de supprimer des lignes de la table Comptes à l’utilisateur mark :

REVOKE DELETE
ON `Comptes`
FROM 'mark'@'localhost'

Exercice

  1. Créer un nouvel utilisateur mark sur le serveur localhost avec le mot de passe motDePasse
  2. Donner la permission de lire la table Clients à l’utilisateur mark
  3. Donner la permission de lire et supprimer des lignes sur la table Commandes à l’utilisateur mark

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 et DENY
  • 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