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

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
历史版本。 PostgreSQL 9.0 已结束支持。 2015-10-08. 请参阅 当前版本手册.

ALTER DEFAULT PRIVILEGES

ALTER DEFAULT PRIVILEGES — define default access privileges

大纲

ALTER DEFAULT PRIVILEGES
    [ FOR { ROLE | USER } target_role [, ...] ]
    [ IN SCHEMA schema_name [, ...] ]
    abbreviated_grant_or_revoke

where abbreviated_grant_or_revoke is one of:

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [,...] | ALL [ PRIVILEGES ] }
    ON TABLES
    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { { USAGE | SELECT | UPDATE }
    [,...] | ALL [ PRIVILEGES ] }
    ON SEQUENCES
    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTIONS
    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [,...] | ALL [ PRIVILEGES ] }
    ON TABLES
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { USAGE | SELECT | UPDATE }
    [,...] | ALL [ PRIVILEGES ] }
    ON SEQUENCES
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTIONS
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

描述

ALTER DEFAULT PRIVILEGES 允许设置将应用于将来创建的对象的权限。(它不影响已存在对象的权限。)目前,只能更改表(包括视图和外部表)、序列和函数的权限。

虽然你可以修改自己的默认权限,也可以修改你所属角色的默认权限,但在创建对象时,新对象的权限只受当前角色的默认权限影响,不会从当前角色所属的任何角色继承。

如GRANT下所述,任何对象类型的默认权限通常会向对象所有者授予所有可授予的权限,也可能向PUBLIC授予一些权限。不过,可以通过使用ALTER DEFAULT PRIVILEGES更改全局默认权限来改变这种行为。

参数

target_role

当前角色所属的现有角色的名称。如果省略FOR ROLE,则假定为当前角色。

schema_name

一个现有模式的名称。如果指定,将修改以后在该模式中创建的对象的默认权限。如果省略IN SCHEMA,则修改全局默认权限。

role_name

要为其授予或撤销权限的现有角色的名称。此参数以及 abbreviated_grant_or_revoke 中的所有其他参数,均按GRANT或REVOKE中的描述工作,只不过这里设置的是整类对象的权限,而不是特定的具名对象。

注解

使用psql的\ddp命令获取现有默认权限分配的信息。权限值的含义与GRANT下对\dp的说明相同。

如果你希望删除一个其默认权限已被修改的角色,则必须先撤销对其默认权限所做的更改,或者使用DROP OWNED BY 去除该角色的默认权限条目。

示例

为你后续在模式myschema中创建的所有表(以及视图)向所有人授予 SELECT 权限,并且也允许角色webuser对它们执行 INSERT:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;

撤销上述操作,使后续创建的表不再拥有任何超出正常情况的权限:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;

移除通常会在函数上授予的公共 EXECUTE 权限,使后续由角色admin创建的所有函数不再自动具有该权限:

ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;

兼容性

在 SQL 标准中没有ALTER DEFAULT PRIVILEGES语句。

另见

GRANT, REVOKE

报告文档问题

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