↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 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 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

REVOKE

REVOKE — 移除访问权限

大纲

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

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE dbname [, ...]
    FROM { username | GROUP groupname | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

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

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE langname [, ...]
    FROM { username | GROUP groupname | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schemaname [, ...]
    FROM { username | GROUP groupname | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

描述

REVOKE 命令从一个或多个用户或用户组回收先前授予的 权限。关键字 PUBLIC 指隐式定义的组, 即所有用户。

权限类型的含义见 GRANT 命令的描述。

注意,任何特定用户所拥有的权限是下列权限的总和:直接授予他的权限、 授予他当前所属的任何组的权限,以及授予 PUBLIC 的权限。因此,举例来说,从 PUBLIC 回收 SELECT 权限 并不一定意味着所有用户都失去了对该对象的 SELECT 权限:直接拥有它或通过组拥有它的那些用户 仍将拥有它。

如果指定了 GRANT OPTION FOR,只回收权限的 转授选项,而不回收权限本身。

如果某个用户持有一个带转授选项的权限,并且已把它授予 其他用户,那么那些其他用户持有的权限称为 依赖权限。如果第一个用户持有的权限或转授选项 正在被回收且存在依赖 权限,那么在指定了 CASCADE 时那些依赖权限也会被 回收,否则回收动作 将失败。这种递归回收只影响通过一条可追溯到这条 REVOKE 命令主体的用户的用户链授予的 权限。 因此,如果受影响的用户还通过其他用户获得了该权限,他们实际 上仍可能保有它。

注意

使用 psql 的 \z 命令 显示现有对象上被授予的权限。权限格式的信息另见 GRANT。

用户只能回收由该用户直接授予的权限。举例来说, 如果用户 A 把一个带转授选项的权限授予了用户 B, 而用户 B 又把它授予了用户 C,那么用户 A 无法直接从 C 回收 该权限。取而代之的是,用户 A 可以从用户 B 回收 转授选项并使用 CASCADE 选项,使该权限 自动地从用户 C 回收。

如果超级用户选择发出 GRANT 或 REVOKE 命令,该命令的执行就像它是受影响对象的 拥有者发出的一样。由于所有权限最终都 来自对象拥有者(可能间接地通过转授选项链), 超级用户可以回收所有权限,但这可能 需要像上面说的那样使用 CASCADE。

示例

回收 public 在表 films 上的插入权限:

REVOKE INSERT ON films FROM PUBLIC;

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

  
REVOKE ALL PRIVILEGES ON kinds FROM manuel;

兼容性

GRANT 命令的兼容性说明 同样适用于 REVOKE。语法摘要是:

REVOKE [ GRANT OPTION FOR ] privileges
    ON object [ ( column [, ...] ) ]
    FROM { PUBLIC | username [, ...] }
    { RESTRICT | CASCADE }

按照标准,RESTRICT 或 CASCADE 二者必须指定其一,但 PostgreSQL 默认采用 RESTRICT。

另见

GRANT

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。