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

20.3. Droits

Quand un objet est créé, il est affecté à un propriétaire. Ce dernier est habituellement le rôle 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 rôles utiliser l'objet, des droits doivent être accordés. Il existe différents droits : SELECT, INSERT, UPDATE, DELETE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, and USAGE. Pour plus d'informations sur le support des différents types de droits par PostgreSQL™, regardez la page de référence GRANT(7).

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

GRANT UPDATE ON comptes TO joe;

Le nom spécial PUBLIC peut être utilisé pour accorder un droit à chaque rôle 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 droit, utilisez la commande nommée REVOKE(7) :

REVOKE ALL ON comptes 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. Les superutilisateurs peuvent toujours le faire ; les rôles ordinaires peuvent seulement le faire s'ils sont le propriétaire actuel de l'objet (ou un membre du rôle propriétaire) et un membre du nouveau rôle propriétaire.