GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username } |
les privilèges possibles sont :
accés à toutes les colonnes d'une table/vue spécifiée
insertion de données dans toutes les colonnes d'une table spécifiée
met à jour toutes les colonnes d'une table spécifiée
supprime les lignes d'une table spécifiée
définit les règles d'une table/vue (voir la clause CREATE RULE)
accorde tous les privilèges
nom d'un objet pour lequel accorder l'accés. Les objets possibles sont :
table
view
sequence
index
forme courte représentant tous les utilisateurs
Un group auquel accorder les privilèges. Dans cette version, le groupe doit être créé explicitement comme décrit plus bas.
nom d'un utilisateur auquel accorder les privilèges. PUBLIC est une forme courte représentant tous les utilisateurs.
message retourné si la commande s'est effectuée correctement.
si l'objet spécifié n'est pas disponible ou si il est impossible de donner les privilèges au groupe spécifié ou aux utilisateurs.
GRANT permet au créateur d'un objet de donner des permissions spécifiques à tous les utilisateurs (PUBLIC) ou à un certain utilisateur ou groupe. Les utilisateurs autre que le créateur n'ont aucune permission d'accés à moins que le créateur accorde (GRANT) les permissions, ensuite l'objet est créé.
Une fois qu'un utilisateur a les privilèges sur un objet, il peut exercer ces privilèges. Il n'y a pas besoin d'accorder les privilèges au créateur d'un objet, le créateur détient automatiquement tous (ALL) les privilèges, et peut aussi supprimer l'objet.
De façon habituelle, pour accorder des privilèges dans Postgres à quelques colonnes seulement, vous devez créer une vue contenant les colonnes désirées et ensuite accorder les privilèges à cette vue.
Utilisez psql \z pour plus d'information sur les permissions concernant les objets existants.
Database = lusitania +------------------+---------------------------------------------+ | Relation | Grant/Revoke Permissions | +------------------+---------------------------------------------+ | mytable | {"=rw","miriam=arwR","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 w -- UPDATE/DELETE a -- INSERT R -- RULE arwR -- ALL |
pour créer un groupe vous inserez manuellement les données dans la table pg_group comme :
|
Voir la commande REVOKE pour supprimer les privilièges d'accès.
Accorde les privilèges à tous les utilisateurs de la table films :
GRANT INSERT ON films TO PUBLIC; |
Accorde tous les privilèges à l'utilisateur manuel sur la vue kinds :
GRANT ALL ON kinds TO manuel; |
La syntaxe SQL92 pour GRANT admet le placement des privilèges pour les colonnes individuelles dans une table, et admet lors du placement d'un privilège, les mêmes privilèges aux autres.
GRANT privilege [, ...] ON object [ ( column [, ...] ) ] [, ...] TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ] |
Les champs sont compatibles avec ceux de l'implémentation Postgres, avec les additions suivantes :
SQL92 permet des privilèges supplémentaires :
admet de référencer certaines colonnes d'une table/vue spécifique dans les contraintes d'intégrité.
permet d'utiliser un domaine, placer un caractère, collation ou translation. Si un objet spécifie quelque chose d'autre qu'une table/vue, privilege doit spécifier seulement USAGE.
SQL92 permet un mot-clé non-fonctionnel supplémentaire : TABLE.
permet d'utiliser le character set spécifié.
permet d'utiliser la séquence collation spécifiée.
permet d'utiliser le character set translation.
permet d'utiliser le domaine spécifié.
permet d'accorder les mêmes privilèges aux autres.