| Documentation PostgreSQL 7.2 | ||
|---|---|---|
| <<< Previous | Next >>> | |
GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] objectname [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] |
La commande GRANT donne des droits spécifiques sur un objet (table, vue, séquence) pour un ou plusieurs utilisateurs ou groupes d'utilisateurs. Ces permissions sont ajoutées à celles déja accordées, si nécessaire.
Le mot-clé PUBLIC insique que les droits sont accordés à tous les utilisateurs, incluent ceux qui peuvent être créés plus tard. PUBLIC peut être vu comme un groupe définit implicitement qui inclut toujours tous les utilisateurs. Notez qu'un utilisateur peut avoir le total des droits accordés, comme utilisateur directement, comme membre d'un groupe, et par les droits accordés par PUBLIC.
Les utilisateurs autres que le créateur d'un objet n'ont pas les droits d'accès à cet objet à moins que le créateur leur accorde les permissions. Il n'est pas nécessaire d'accorder les droits au créateur d'un objet, le créateur les obtient tous automatiquement. (Le créateur, peut cependant, choisir de réduire certains de ses propres droits par sécurité. Notez que la possibilité d'accorder ou de réduire les droits est inhérente au créateur et ne peut être perdue. Le droit de supprimer un objet est tout à fait inhérent au créateur, et ne peut être accordée ou révoquée).
les privilèges possibles sont :
Permet le SELECT depuis une colonne d'une table spécifiée, une vue, ou une séquence. Permet aussi l'utilisation de COPY FROM.
Permet le INSERT d'une nouvelle ligne dans la table spécifiée. Permet aussi COPY TO.
Permet le UPDATE d'une colonne d'une table spécifiée. SELECT ... FOR UPDATE nécessite aussi ce privilège (en plus du droit SELECT). Pour les séquences, ce droit permet l'utilisation de nextval, currval et setval.
Permet le DELETE d'une ligne d'une table spécifiée.
Permet la création d'une règle sur une table/vue. (Voir l'instruction CREATE RULE).
Pour créer une table avec une contrainte de clé-étrangère, il est nécessaire d'avoir ce droit sur la table avec la clé référencée.
Permet la création d'un déclencheur sur la table spécifiée. (Voir l'instruction CREATE TRIGGER).
Accorde tous les droits précédents en une seule fois. Le mot-clé PRIVILEGES est optionnel dans PostgreSQL, bien qu'il soit nécessaire en SQL strict.
Il peut être noté que les superutilisateurs de la base peuvent accéder à tous les objets sans se soucier des droits relatifs à ces objets. C'est comparable aux droits de root sur un système Unix. Comme avec root, il est imprudent d'opérer en superutilisateur sauf en cas d'absolue nécessité.
De façon courante, pour accorder des droits dans PostgreSQL pour quelques colonnes seulement, vous devez créer une vue ayant les colonnes désirées et ensuite accorder les droits à cette vue.
Utilisez la commande \z de psql(1) pour obtenir l'information sur les droits des objets existants :
Database = lusitania
+------------------+---------------------------------------------+
| Relation | Grant/Revoke Permissions |
+------------------+---------------------------------------------+
| mytable | {"=rw","miriam=arwdRxt","group todos=rw"} |
+------------------+---------------------------------------------+
Legend:
uname=arwR -- privileges granted to a user
group gname=arwR -- privileges granted to a group
=arwR -- privileges granted to PUBLIC
r -- SELECT ("read")
w -- UPDATE ("write")
a -- INSERT ("append")
d -- DELETE
R -- RULE
x -- REFERENCES
t -- TRIGGER
arwdRxt -- ALL PRIVILEGES |
La commande REVOKE est utilisée pour supprimer les droits d'accès.
Accorde les droits d'insertion à tous les utilisateurs de la table films :
GRANT INSERT ON films TO PUBLIC; |
Accorde tous les droits à l'utilisateur manuel sur la vue kinds:
GRANT ALL PRIVILEGES ON kinds TO manuel; |
Le mot-clé PRIVILEGES dans ALL PRIVILEGES est requis. SQL ne supporte pas le placmenet des droits sur plus d'une table par commande.
La syntaxe SQL92 pour GRANT permet de placer des droits pour des colonnes individuelles dans une table, et permet de placer le privilège d'accorder les mêmes droits aux autres :
GRANT privilege [, ...]
ON object [ ( column [, ...] ) ] [, ...]
TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ] |
SQL permet d'accorder le droit USAGE à d'autres sortes d'objets : CHARACTER SET, COLLATION, TRANSLATION, DOMAIN.
Le droit TRIGGER privilege a été introduit dans le SQL99. Le droit RULE est une extension de PostgreSQL.
| <<< Previous | Home | Next >>> |
| FETCH | Up | INSERT |