17.4. Droits

Quand un objet base de données est créé, il est affecté à un propriétaire. Ce dernier est l'utilisateur qui a exécuté l'instruction de création. Pour changer le propriétaire d'une table, d'un index, d'une séquence ou d'une vue, utilisez la commande ALTER TABLE. Par défaut, seul le propriétaire (ou le super-utilisateur) peut faire n'importe quoi avec un objet. Afin de laisser les autres utilisateurs utiliser l'objet, des droits doivent être accordés.

Il existe différents privilèges : SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE, USAGE et ALL. Pour plus d'informations sur le support des différents types de privilèges par PostgreSQL, regardez la page de référence GRANT. Le droit de modifier ou de détruire un objet est toujours uniquement le privilège du propriétaire. 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;

L'utilisateur qui exécute cette commande doit être le propriétaire de la table. Pour accorder un droit à un groupe, utilisez

GRANT SELECT ON comptes TO GROUP staff;

Le nom d'<< utilisateur >> 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 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'une table (par exemple, le droit de faire DROP, GRANT, REVOKE, etc) sont toujours implicites et ne peuvent pas être accordés ou révoqués. Mais le propriétaire d'une table 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.