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. | grant_on_client_master_keys_clause
6. | grant_on_column_encryption_keys_clause
7. | revoke_on_tables_clause
8. | revoke_on_sequences_clause
9. | revoke_on_functions_clause
10. | revoke_on_types_clause
11. | revoke_on_client_master_keys_clause
12. | revoke_on_column_encryption_keys_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 ]
- 其中grant_on_client_master_keys_clause子句用于对客户端主密钥授权。
1. GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
2. ON CLIENT_MASTER_KEYS
3. TO { [ GROUP ] role_name | PUBLIC } [, ...]
4. [ WITH GRANT OPTION ]
说明: 轻量版场景下,openGauss提供此语法,但密态数据库相关功能不可用。 - 其中grant_on_column_encryption_keys_clause子句用于对列加密密钥授权。
1. GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
2. ON COLUMN_ENCRYPTION_KEYS
3. TO { [ GROUP ] role_name | PUBLIC } [, ...]
4. [ WITH GRANT OPTION ]
说明: 轻量版场景下,openGauss提供此语法,但密态数据库相关功能不可用。 - 其中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 ]
- 其中revoke_on_client_master_keys_clause子句用于回收客户端主密钥的权限。
1. REVOKE [ GRANT OPTION FOR ]
2. { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
3. ON CLIENT_MASTER_KEYS
4. FROM { [ GROUP ] role_name | PUBLIC } [, ...]
5. [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
说明: 轻量版场景下,openGauss提供此语法,但密态数据库相关功能不可用。 - 其中revoke_on_column_encryption_keys_clause子句用于回收列加密密钥的权限。
1. REVOKE [ GRANT OPTION FOR ]
2. { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] }
3. ON COLUMN_ENCRYPTION_KEYS
4. FROM { [ GROUP ] role_name | PUBLIC } [, ...]
5. [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
说明: 轻量版场景下,openGauss提供此语法,但密态数据库相关功能不可用。
参数说明
- target_role
已有角色的名称。如果省略FOR ROLE/USER,则缺省值为当前角色/用户。
取值范围:已有角色的名称。 - schema_name
现有模式的名称。
target_role必须有schema_name的CREATE权限。
取值范围:现有模式的名称。 - role_name
被授予或者取消权限角色的名称。
取值范围:已存在的角色名称。
须知: 如果想删除一个被赋予了默认权限的角色,有必要恢复改变的缺省权限或者使用DROP OWNED BY来为角色脱离缺省的权限记录。
示例
1. --将创建在模式tpcds里的所有表(和视图)的SELECT权限授予每一个用户。
2. openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT SELECT ON TABLES TO PUBLIC;
4. --创建用户普通用户jack。
5. openGauss=# CREATE USER jack PASSWORD 'xxxxxxxxx';
7. --将tpcds下的所有表的插入权限授予用户jack。
8. openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack;
10. --撤销上述权限。
11. openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE SELECT ON TABLES FROM PUBLIC;
12. openGauss=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE INSERT ON TABLES FROM jack;
14. --删除用户jack。
15. openGauss=# DROP USER jack;
说明: 轻量版场景下,openGauss提供此语法,但密态数据库相关功能不可用。
- 其中grant_on_column_encryption_keys_clause子句用于对列加密密钥授权。