ALTER DEFAULT PRIVILEGES

功能描述

设置应用于将来创建的对象的权限(这不会影响分配到已有对象中的权限)。

注意事项

目前只支持表(包括视图)、 序列、函数和类型的权限更改。

语法格式

  1. ALTER DEFAULT PRIVILEGES
  2. [ FOR { ROLE | USER } target_role [, ...] ]
  3. [ IN SCHEMA schema_name [, ...] ]
  4. abbreviated_grant_or_revoke;
  • 其中abbreviated_grant_or_revoke子句用于指定对哪些对象进行授权或回收权限。

    1. grant_on_tables_clause
    2. | grant_on_sequences_clause
    3. | grant_on_functions_clause
    4. | grant_on_types_clause
    5. | revoke_on_tables_clause
    6. | revoke_on_sequences_clause
    7. | revoke_on_functions_clause
    8. | revoke_on_types_clause
  • 其中grant_on_tables_clause子句用于对表授权。

    1. GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }
    2. [, ...] | ALL [ PRIVILEGES ] }
    3. ON TABLES
    4. TO { [ GROUP ] role_name | PUBLIC } [, ...]
    5. [ WITH GRANT OPTION ]
  • 其中grant_on_sequences_clause子句用于对序列授权。

    1. GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT }
    2. [, ...] | ALL [ PRIVILEGES ] }
    3. ON SEQUENCES
    4. TO { [ GROUP ] role_name | PUBLIC } [, ...]
    5. [ WITH GRANT OPTION ]
  • 其中grant_on_functions_clause子句用于对函数授权。

    1. GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
    2. ON FUNCTIONS
    3. TO { [ GROUP ] role_name | PUBLIC } [, ...]
    4. [ WITH GRANT OPTION ]
  • 其中grant_on_types_clause子句用于对类型授权。

    1. GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
    2. ON TYPES
    3. TO { [ GROUP ] role_name | PUBLIC } [, ...]
    4. [ WITH GRANT OPTION ]
  • 其中revoke_on_tables_clause子句用于回收表对象的权限。

    1. REVOKE [ GRANT OPTION FOR ]
    2. { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }
    3. [, ...] | ALL [ PRIVILEGES ] }
    4. ON TABLES
    5. FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    6. [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
  • 其中revoke_on_sequences_clause子句用于回收序列的权限。

    1. REVOKE [ GRANT OPTION FOR ]
    2. { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT }
    3. [, ...] | ALL [ PRIVILEGES ] }
    4. ON SEQUENCES
    5. FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    6. [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
  • 其中revoke_on_functions_clause子句用于回收函数的权限。

    1. REVOKE [ GRANT OPTION FOR ]
    2. { {EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
    3. ON FUNCTIONS
    4. FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    5. [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
  • 其中revoke_on_types_clause子句用于回收类型的权限。

    1. REVOKE [ GRANT OPTION FOR ]
    2. { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
    3. ON TYPES
    4. FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    5. [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]

参数说明

  • target_role

    已有角色的名称。如果省略FOR ROLE/USER,则缺省值为当前角色/用户。

    取值范围:已有角色的名称。

  • schema_name

    现有模式的名称。

    target_role必须有schema_name的CREATE权限。

    取值范围:现有模式的名称。

  • role_name

    被授予或者取消权限角色的名称。

    取值范围:已存在的角色名称。

ALTER DEFAULT PRIVILEGES - 图1 须知: 如果想删除一个被赋予了默认权限的角色,有必要恢复改变的缺省权限或者使用DROP OWNED BY来为角色脱离缺省的权限记录。

示例

  1. --将创建在模式tpcds里的所有表(和视图)的SELECT权限授予每一个用户。
  2. postgres=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT SELECT ON TABLES TO PUBLIC;
  3. --创建用户普通用户jack
  4. postgres=# CREATE USER jack PASSWORD 'Bigdata@123';
  5. --将tpcds下的所有表的插入权限授予用户jack
  6. postgres=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack;
  7. --撤销上述权限。
  8. postgres=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE SELECT ON TABLES FROM PUBLIC;
  9. postgres=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE INSERT ON TABLES FROM jack;
  10. --删除用户jack
  11. postgres=# DROP USER jack;

相关链接

GRANTREVOKE