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

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.4 已结束支持。 请参阅 当前版本手册.

REVOKE

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

大纲


REVOKE privilege [, ...]
    ON object [, ...]
    FROM { PUBLIC | GROUP group | 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;

用法

-- revoke insert privilege from all users on table films:
--
REVOKE INSERT ON films FROM PUBLIC;

-- revoke all privileges from user manuel on view 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 关键字,回收将失败。

报告文档问题

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