REVOKE

Nom

REVOKE — Supprime les privilèges d'accès à un utilisateur, un groupe ou tous les utilisateurs.
REVOKE privilege [, ...]
    ON object [, ...]
    FROM { PUBLIC | GROUP ER">gBLE> | username }
  

Entrées

privilege

Les privilèges possibles sont :

SELECT

droit d'accéder à toutes les colonnes d'une table/vue.

INSERT

droit d'insérer des données dans toutes les colonnes d'une table.

UPDATE

droit de mettre à jour toutes les colonnes d'une table.

DELETE

droit de supprimer les lignes d'une table.

RULE

droit de définir des règles sur une table/vue. (Voir CREATE RULE).

ALL

Abroge tous les droits.

object

Nom d'un objet pour lequel supprimer l'accès. les objets possibles sont :

  • table

  • view

  • sequence

  • index

group

Nom d'un groupe à qui on supprime les droits.

username

Nom d'un utilisateur à qui on supprime les droits. Utilisez le mot-clé PUBLIC pour spécifier tous les utilisateurs.

PUBLIC

abroge les droits spécifiés pour tous les utilisateurs.

Sorties

CHANGE

Message retourné si succès.

ERROR

Message retourné si l'objet n'est pas disponible ou impossible d'abroger les droits d'un groupe ou d'utilisateurs.

Description

REVOKE permet au créateur d'un objet d'abroger les droits accordés précédemment, à tous les utilisateurs (via PUBLIC) ou à un utilisateur ou un groupe.

Notes

voir la commande 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
    

Tuyau

Habituellement, pour créer un groupe vous devez insérer les données à la main dans la table pg_group comme suit :
INSERT INTO pg_group VALUES ('todos');
CREATE USER miriam IN GROUP todos;
     

Utilisation

Abroge les droits d'insérer dans la table films pour tous les utilisateurs :
REVOKE INSERT ON films FROM PUBLIC;
  

Abroge tous les droits de l'utilisateur manuel sur la vue kinds:
  
REVOKE ALL ON kinds FROM manuel;
   

Compatibilité

SQL92

La syntaxe SQL92 pour REVOKE possède des fonctionnalités supplémentaires pour l'abrogation des droits, incluant ceux sur les colonnes individuelles des tables :

REVOKE { SELECT | DELETE | USAGE | ALL PRIVILEGES } [, ...]
    ON object
    FROM { PUBLIC | username [, ...] } { RESTRICT | CASCADE }
REVOKE { INSERT | UPDATE | REFERENCES } [, ...] [ ( column [, ...] ) ]
    ON object
    FROM { PUBLIC | username [, ...] } { RESTRICT | CASCADE }
       

Voir GRANT pour les détails sur les champs individuels.

REVOKE GRANT OPTION FOR privilege [, ...]
    ON object
    FROM { PUBLIC | username [, ...] } { RESTRICT | CASCADE }
       

abroge le droit pour un utilisateur d'accorder des privilèges aux autres. Voir la commande GRANT pour les détails sur les champs individuels.

Les objets possibles sont :

[ TABLE ] table/view
CHARACTER SET character-set
COLLATION collation
TRANSLATION translation
DOMAIN domain

Si l'utilisateur1 donne un privilège WITH GRANT OPTION à l'utilisateur2, et que l'utilisateur2 donne ces droits à l'utilisateur3, l'utilisateur1 peut abroger ces droits en cascade en utiliant le mot-clé CASCADE.

Si l'utilisateur1 accorde un privilège WITH GRANT OPTION à l'utilisateur2, et que l'utilisateur2 donne ces droits à l'utilisateur3, alors si l'utilisateur1 essaie d'abroger ces privilèges, ceci ne fonctionnera pas si il/elle a spécifié le mot-clé RESTRICT.