PostgreSQLLa base de données la plus sophistiquée au monde.

5.6. Droits

Tout utilisateur qui crée un objet dans la base de données en devient le propriétaire. Par défaut, seul le propriétaire peut l'utiliser. Pour que d'autres utilisateurs puissent l'utiliser, des privilèges doivent être accordés (les superutilisateurs ont, toutefois, accès à tout objet, toujours).

Il existe un certain nombre de droits différents : SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE et USAGE. Les droits applicables à un objet particulier varient selon le type d'objet (table, fonction...). La page de référence GRANT(7) fournit une information complète sur les différents types de droits gérés par PostgreSQL™. La section et les chapitres suivants présentent l'utilisation de ces droits.

Le droit de modifier ou de détruire un objet est le privilège du seul propriétaire.

[Note]

Note

Pour modifier le propriétaire d'une table, d'un index, d'une séquence ou d'une vue, on utilise la commande ALTER TABLE(7). Il existe des commandes ALTER correspondantes pour les autres types d'objets.

La commande GRANT est utilisée pour accorder des privilèges (on dit aussi « granter un privilège »). Par exemple, si joe est un utilisateur et comptes une table, le privilège d'actualiser la table comptes peut être accordé à joe avec :

GRANT UPDATE ON comptes TO joe;

Écrire ALL à la place d'un droit spécifique accorde tous les droits applicables à ce type d'objet.

Le nom d'« utilisateur » spécial PUBLIC peut être utilisé pour donner un privilège à tous les utilisateurs du système. De plus, les rôles de type « group » peuvent être configurés pour aider à la gestion des droits quand il y a beaucoup d'utilisateurs dans une base -- pour les détails, voir Chapitre 20, Rôles et droits de la base de données.

Pour révoquer un privilège, on utilise la commande bien-nommée REVOKE, comme dans l'exemple ci-dessous :

REVOKE ALL ON comptes FROM PUBLIC;

Les privilèges spéciaux du propriétaire de l'objet (c'est-à-dire, le droit d'exécuter DROP, GRANT, REVOKE, etc.) appartiennent toujours implicitement au propriétaire. Il ne peuvent être ni accordés ni révoqués. Mais le propriétaire de l'objet peut choisir de révoquer ses propres droits ordinaires pour, par exemple, mettre une table en lecture seule pour lui-même et pour les autres.

Habituellement, seul le propriétaire de l'objet (ou un superutilisateur) peut granter ou révoquer les droits sur un objet. Néanmoins, il est possible de donner un privilège « avec possibilité de transmission » (« with grant option »), qui donne à celui qui le reçoit la permission de le donner à d'autres. Si cette option est ensuite révoquée, alors tous ceux qui ont reçu ce privilège par cet utilisateur (directement ou indirectement via la chaîne des dons) perdent ce privilège. Pour les détails, voir les pages de références GRANT(7) et REVOKE(7).