REVOKE

Nom

REVOKE -- supprime les droits d'accès

Synopsis

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
    [,...] | ALL [ PRIVILEGES ] }
    ON [ TABLE ] nom_table [, ...]
    FROM { nom_utilisateur | GROUP
    nom_groupe | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE nom_base [, ...]
    FROM { nom_utilisateur | GROUP
    nom_groupe | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTION nom_fonction
([type, ...]) [, ...]
    FROM { nom_utilisateur | GROUP
    nom_groupe | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE nom_langage [, ...]
    FROM { nom_utilisateur | GROUP
    nom_groupe | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA nom_schéma [, ...]
    FROM { nom_utilisateur | GROUP
    nom_groupe | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

Description

La commande REVOKE retire des droits précédemment attribués à un ou plusieurs utilisateurs ou groupes d'utilisateurs. Le mot clé PUBLIC fait référence au groupe implicitement défini de tous les utilisateurs.

Voir la description de la commande GRANT pour connaître la signification des types de droits.

Notez qu'un utilisateur possède la somme des droits qui lui ont été donnés directement, des droits qui ont été donnés à un groupe dont il est membre et des droits donnés à PUBLIC. Du coup, par exemple, retirer les droits de SELECT à PUBLIC ne veut pas nécessairement dire que plus personne n'a le droit de faire de SELECT sur l'objet : ceux qui en avaient obtenu le droit directement ou via un groupe l'ont toujours.

Si GRANT OPTION FOR est précisé, seul l'option de transmission de droit (grant option) est supprimée, pas le droit lui même.

Si un utilisateur détient un privilège avec le droit de le transmettre, et qu'il l'a transmis à d'autres utilisateurs, alors les droits de ceux-ci sont appelés des droits dépendants. Si les droits ou le droit de transmettre du premier utilisateur sont supprimés, et que des droits dépendants existent, alors ces droits dépendants sont aussi supprimés si l'option CASCADE est utilisée, sinon la suppression de droits est refusée. Cette révocation récursive n'affecte que les droits qui avaient été attribués à travers une chaîne d'utilisateurs traçable jusqu'à l'utilisateur qui subit la commande REVOKE. Du coup, les utilisateurs affectés peuvent garder le droit s'il avait aussi été attribué via d'autres utilisateurs.

Notes

Utilisez la commande \z de psql pour afficher les droits donnés sur des objets existants. Voir aussi GRANT pour des informations sur le format.

Un utilisateur ne peut révoquer que les droits qu'il a donné directement. Si, par exemple, un utilisateur A a donné un droit et la possibilité de le transmettre à un utilisateur B, et que B à son tour l'a donné à C, alors A ne peut pas retirer directement le droit de C. À la place, il peut supprimer le droit de transmettre à B et utiliser l'option CASCADE pour que le droit soit automatiquement supprimé à C.

Si un superutilisateur choisit d'exécuter une commande GRANT ou REVOKE, la commande est exécutée comme si elle était lancée par le propriétaire de l'objet affecté. Comme tous les droits proviennent du propriétaire d'un objet (directement ou via une chaîne de transmissions de droits), un superutilisateur peut supprimer tous les droits sur un objet mais cela peut nécessiter l'utilisation de CASCADE comme expliqué précédemment.

Exemples

Enlève au groupe public le droit d'insérer des lignes dans la table films :

REVOKE INSERT ON films FROM PUBLIC;

Supprime tous les droits de l'utilisateur manuel sur la vue genres :

  
REVOKE ALL PRIVILEGES ON genres FROM manuel;

Compatibilité

La note de compatibilité de la commande GRANT s'applique par analogie à REVOKE. Le résumé de la syntaxe est :

REVOKE [ GRANT OPTION FOR ] privileges
    ON objet [ ( colonne [, ...] ) ]
    FROM { PUBLIC | nom_utilisateur
[, ...] }
    { RESTRICT | CASCADE }

Le standard nécessite qu'une des options RESTRICT ou CASCADE soit indiquée, mais PostgreSQL utilise RESTRICT par défaut.

Voir aussi

GRANT