17.4. Droits

Quand un objet est créé, il est affecté à un propriétaire. Ce dernier est habituellement l'utilisateur qui a exécuté l'instruction de création. Pour la plupart des objets, l'état initial est tel que seul le propriétaire (ou un superutilisateur) peut faire quelque chose avec cet objet. Afin de laisser les autres utilisateurs utiliser l'objet, des droits doivent être accordés. Il existe différents droits : SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE et USAGE. Pour plus d'informations sur le support des différents types de droits par PostgreSQL, regardez la page de référence GRANT.

Pour affecter des droits, la commande GRANT est utilisée. Ainsi, si joe est un utilisateur existant et comptes est une table existante, le droit pour mettre à jour la table peut être accordé avec

GRANT UPDATE ON comptes TO joe;

Pour accorder un droit à un groupe, utilisez

GRANT SELECT ON comptes TO GROUP staff;

Le nom spécial PUBLIC peut être utilisé pour accorder un privilège à chaque utilisateur du système. Écrire ALL à la place d'un droit spécifique signifie que tous les droits s'appliquant à l'objet seront accordés.

Pour révoquer un privilège, utilisez la commande nommée REVOKE :

REVOKE ALL ON accounts FROM PUBLIC;

Les droits spéciaux d'un propriétaire d'un objet (par exemple, le droit de modifier ou détruire un objet) sont toujours implicites et ne peuvent pas être accordés ou révoqués. Mais le propriétaire peut choisir de révoquer ses propres droits ordinaires, par exemple mettre une table en lecture seule pour lui-même aussi bien que pour les autres.

Un objet peut être affecté à un nouveau propriétaire avec une commande ALTER du genre approprié pour l'objet. Seuls les superutilisateurs peuvent faire ceci.