5.7. Privilèges

Quand vous créez un objet base de données, vous en devenez le propriétaire. Avec les paramètres par défaut, seul le propriétaire d'un objet peut faire quelque chose avec. Pour que d'autres utilisateurs puissent s'en servir, des privilèges doivent être accordés. (Néanmoins, les utilisateurs qui sont superutilisateurs ont toujours accès à n'importe quel objet.)

Il y a plusieurs privilèges différents : SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE, et USAGE. Les droits applicables à un objet particulier varient suivant le type d'objet (table, fonction, etc.) Pour une information complète sur les différents types de privilèges gérés par PostgreSQL, lisez la page de référence GRANT. La section et les chapitres suivants vous montreront aussi comment ces privilèges sont utilisés.

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

Note : Pour modifier le propriétaire d'une table, d'un index, d'une séquence ou d'une vue, utilisez la commande ALTER TABLE. Il existe des commandes ALTER correspondant aux autres types d'objets.

Pour accorder des privilèges, la commande GRANT est utilisé. Par exemple, si joe est un utilisateur existant et accounts une table existante, le privilège de mettre la table à jour peut être accordé avec

GRANT UPDATE ON accounts TO joe;

Pour accorder un privilège à un groupe, utilisez

GRANT SELECT ON accounts TO GROUP staff;

Le nom d'<< utilisateur >> spéciale PUBLIC peut être utilisé pour accorder un privilège à tout les utilisateurs du système. Écrire ALL au lieu d'un privilège spécifique accorde tous les privilèges adéquats pour ce type d'objet.

Pour révoquer un privilège, utilisez la commande approprié ci dessous; REVOKE :

REVOKE ALL ON accounts FROM PUBLIC;

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

Habituellement, seul le propriétaire de l'objet (ou un superutilisateur) peut donner ou révoquer les droits sur un objet. Néanmoins, il est possible de donner un droit << avec une option de don de droits >>, qui donne à celui qui le reçoit de le donner à d'autres. Si cette option est ensuite révoquée, alors tous ceux qui ont reçu le droit de cet utilisateur (directement ou indirectement via la chaîne des dons) perdront leur droit. Pour des détails, voir les pages de références GRANT et REVOKE.