↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 6.5 已结束支持。 请参阅 当前版本手册.

REVOKE

REVOKE — 从一个用户、一个组或所有用户回收访问权限。

大纲

REVOKE privilege [, ...]
    ON object [, ...]
    FROM { PUBLIC | GROUP ER">gBLE> | username }
  

输入

privilege

可能的权限有:

SELECT

访问一个指定表/视图的所有列的权限。

INSERT

向一个指定表的所有列插入数据的权限。

UPDATE

更新一个指定表的所有列的权限。

DELETE

从一个指定表删除行的权限。

RULE

在表/视图上定义规则的权限。(见 CREATE RULE)。

ALL

回收所有权限。

object

要回收访问权限的对象的名称。可能的对象有:

  • 表

  • 视图

  • 序列

  • 索引

group

要从中回收权限的组的名称。

username

要从中回收权限的用户的名称。使用 PUBLIC 关键字指定所有用户。

PUBLIC

为所有用户回收指定的权限。

输出

CHANGE

成功时返回的消息。

ERROR

对象不可用或不可能从一个组或用户回收权限时返回的消息。

描述

REVOKE 允许一个对象的创建者回收先前授予所有用户(通过 PUBLIC)或某个用户或组的权限。

注意

关于现有对象上权限的更多信息,请参阅 psql 的 \z 命令:

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
    

提示

目前,要创建一个 GROUP,你必须手动向表 pg_group 中插入数据:

INSERT INTO pg_group VALUES ('todos');
CREATE USER miriam IN GROUP todos;
     

用法

从所有用户回收表 films 上的插入权限:

REVOKE INSERT ON films FROM PUBLIC;
  

回收用户 manuel 在视图 kinds 上的所有权限:

  
REVOKE ALL ON kinds FROM manuel;
   

兼容性

SQL92

SQL92 的 REVOKE 语法有更多回收权限的能力,包括对表中个别列的权限:

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 }
       

各个字段的细节请参阅 GRANT。

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

回收一个用户把指定权限授予其他人的权力。各个字段的细节请参阅 GRANT 命令。

可能的对象有:

[ TABLE ] 表/视图
CHARACTER SET 字符集
COLLATION 排序规则
TRANSLATION 转换
DOMAIN 域

如果 user1 把一个权限带 WITH GRANT OPTION 地授予 user2,而 user2 又把它授予 user3,那么 user1 可以使用 CASCADE 关键字级联回收该权限。

如果 user1 把一个权限带 WITH GRANT OPTION 地授予 user2,而 user2 又把它授予 user3,那么当 user1 试图回收该权限时,如果他/她指定了 RESTRICT 关键字,回收将失败。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.