Attribution de droits

SQL propose une commande pour attribuer des droits à des utilisateurs sur des tables.

Syntaxe

1
GRANT <liste de droits> ON <nom table> TO <utilisateur> [WITH GRANT OPTION]

Les droits disponibles renvoient directement aux instructions SQL que l'utilisateur peut exécuter :

  • SELECT

  • INSERT

  • DELETE

  • UPDATE

  • ALTER

De plus il est possible de spécifier le droit ALL PRIVILEGES qui donne tous les droits à l'utilisateur (sauf celui de transmettre ses droits).

La clause WITH GRANT OPTION est optionnelle, elle permet de préciser que l'utilisateur a le droit de transférer ses propres droits sur la table à d'autres utilisateur. Une telle clause permet une gestion décentralisée de l'attribution des droits et non reposant uniquement dans les mains d'un administrateur unique.

La spécification PUBLIC à la place d'un nom d'utilisateur permet de donner les droits spécifiés à tous les utilisateurs de la BD[1].

Exemple

1
GRANT SELECT, UPDATE ON Personne TO Pierre;
2
GRANT ALL PRIVILEGES ON Adresse TO PUBLIC;

RemarqueDroits sur une vue

Il est possible de spécifier des droits sur des vues plutôt que sur des tables, avec une syntaxe identique (et un nom de vue à la place d'un nom de table).

RemarqueCatalogue de données

Les droits sont stockés dans le catalogue des données, il est généralement possible de modifier directement ce catalogue à la place d'utiliser la commande GRANT. Cela reste néanmoins déconseillé.

RemarqueCréation des utilisateurs

Les modalités de création d'utilisateurs, voire de groupes d'utilisateurs dans le SGBD, reste dépendantes de celui-ci. Des commande SQL peuvent être disponibles, telles que CREATE USER, ou bien la commande GRANT lorsque qu'elle porte sur un utilisateur non existant peut être chargée de créer cet utilisateur. Des modules spécifiques d'administration sont généralement disponibles pour prendre en charge la gestion des utilisateurs.