ALTER DEFAULT PRIVILEGES

Name

ALTER DEFAULT PRIVILEGES -- 定义缺省连接权限

Synopsis

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

现有模式的名称。每个target_role必须对每个特定模式有 CREATE权限。

role_name

授予或者取消权限的现有角色的名称。这个参数,以及 abbreviated_grant_or_revoke下的所有 参数,与GRANTREVOKE下描述 的相似。除了一个是吗,面向对象的所有类设置权限的而不是特定的命名对象。

注意

使用psql\ddp命令来获得关于默认 权限的现有分配情况的信息。权限值的意义与GRANT下的 \dp的解释相同。

如果您想删除一个默认权限所改变的角色,有必要扭转缺省权限中的改变或者使用 DROP OWNED BY来为角色脱离缺省的权限记录。

例子

将面向您随后在myschema模式里创建的所有表(和视图)的SELECT权限授予每一个用户, 并且也允许角色webuser往里插入:

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