角色
openGauss提供了一个隐式定义的拥有所有角色的组PUBLIC,所有创建的用户和角色默认拥有PUBLIC所拥有的权限。关于PUBLIC默认拥有的权限请参考。要撤销或重新授予用户和角色对PUBLIC的权限, 可通过在GRANT和REVOKE指定关键字PUBLIC实现。
要查看所有角色,请查询系统表PG_ROLES:
非三权分立时,只有系统管理员和具有CREATEROLE属性的用户才能创建、修改或删除角色。三权分立下,只有初始用户和具有CREATEROLE属性的用户才能创建、修改或删除角色。
- 要创建角色,请使用。
- 要删除角色,请使用DROP ROLE。DROP ROLE只会删除角色,并不会删除角色中的成员用户帐户。
内置角色
openGauss提供了一组默认角色,以gs_role_开头命名。它们提供对特定的、通常需要高权限的操作的访问,可以将这些角色GRANT给数据库内的其他用户或角色,让这些用户能够使用特定的功能。在授予这些角色时应当非常小心,以确保它们被用在需要的地方。描述了内置角色允许的权限范围:
表 1 内置角色权限描述
关于内置角色的管理有如下约束:
- 以gs_role_开头的角色名作为数据库的内置角色保留名,禁止新建以“gs_role_”开头的用户/角色,也禁止将已有的用户/角色重命名为以“gs_role_”开头;
- 禁止对内置角色的ALTER和DROP操作;
- gsql元命令\du和\dg不显示内置角色的相关信息,但若显示指定了pattern为特定内置角色则会显示。
三权分立关闭时,初始用户、具有SYSADMIN权限的用户和具有内置角色ADMIN OPTION权限的用户有权对内置角色执行GRANT/REVOKE管理。三权分立打开时,初始用户和具有内置角色ADMIN OPTION权限的用户有权对内置角色执行GRANT/REVOKE管理。例如: