CREATE ROLE
角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。
注意事项
- 在数据库中添加一个新角色,角色无登录权限。
- 创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。
其中角色信息设置子句option语法为:
参数说明
role_name
角色名称。
取值范围:字符串,要符合标识符的命名规范,且最多为63个字符。若超过63个字符,数据库会截断并保留前63个字符当做角色名称。在创建角色时,超过63个字符的时候数据库会给出提示信息。
password
登录密码。
密码规则如下:
- 密码默认不少于8个字符。
- 不能与用户名及用户名倒序相同。
- 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。
- 密码也可以是符合格式要求的密文字符串,这种情况主要用于用户数据导入场景,不推荐用户直接使用。如果直接使用密文密码,用户需要知道密文密码对应的明文,并且保证明文密码复杂度,数据库不会校验密文密码复杂度,直接使用密文密码的安全性由用户保证。
- 创建角色时,应当使用双引号或单引号将用户密码括起来。
取值范围:不为空的字符串。
EXPIRED
在创建用户时可指定EXPIRED参数,即创建密码失效用户,该用户不允许执行简单查询和扩展查询。只有在修改自身密码后才可正常执行语句。
DISABLE
默认情况下,用户可以更改自己的密码,除非密码被禁用。要禁用用户的密码,请指定DISABLE。禁用某个用户的密码后,将从系统中删除该密码,此类用户只能通过外部认证来连接数据库,例如:kerberos认证。只有管理员才能启用或禁用密码。普通用户不能禁用初始用户的密码。要启用密码,请运行ALTER USER并指定密码。
说明:
轻量版场景下,openGauss中kerberos相关功能不可用。
ENCRYPTED | UNENCRYPTED
控制密码存储在系统表里的口令是否加密。按照产品安全要求,密码必须加密存储,所以,UNENCRYPTED在openGauss中禁止使用。因为系统无法对指定的加密口令字符串进行解密,所以如果目前的口令字符串已经是用SHA256加密的格式,则会继续照此存放,而不管是否声明了ENCRYPTED或UNENCRYPTED。这样就允许在dump/restore的时候重新加载加密的口令。
MONADMIN | NOMONADMIN
定义角色是否是监控管理员。
缺省为NOMONADMIN。
OPRADMIN | NOOPRADMIN
定义角色是否是运维管理员。
缺省为NOOPRADMIN。
POLADMIN | NOPOLADMIN
定义角色是否是安全策略管理员。
AUDITADMIN | NOAUDITADMIN
定义角色是否有审计管理属性。
缺省为NOAUDITADMIN。
CREATEDB | NOCREATEDB
决定一个新角色是否能创建数据库。
新角色没有创建数据库的权限。
缺省为NOCREATEDB。
USEFT | NOUSEFT
该参数为保留参数,暂未启用。
CREATEROLE | NOCREATEROLE
决定一个角色是否可以创建新角色(也就是执行CREATE ROLE和CREATE USER)。 一个拥有CREATEROLE权限的角色也可以修改和删除其他角色。
缺省为NOCREATEROLE。
INHERIT | NOINHERIT
这些子句决定一个角色是否“继承”它所在组的角色的权限。不推荐使用。
LOGIN | NOLOGIN
具有LOGIN属性的角色才可以登录数据库。一个拥有LOGIN属性的角色可以认为是一个用户。
缺省为NOLOGIN。
REPLICATION | NOREPLICATION
定义角色是否允许流复制或设置系统为备份模式。REPLICATION属性是特定的角色,仅用于复制。
缺省为NOREPLICATION。
INDEPENDENT | NOINDEPENDENT
定义私有、独立的角色。具有INDEPENDENT属性的角色,管理员对其进行的控制、访问的权限被分离,具体规则如下:
- 未经INDEPENDENT角色授权,系统管理员无权对其表对象进行增、删、查、改、拷贝、授权操作。
- 若将私有用户表的相关权限授予其他非私有用户,系统管理员也会获得同样的权限。
- 未经INDEPENDENT角色授权,系统管理员和拥有CREATEROLE属性的安全管理员无权修改INDEPENDENT角色的继承关系。
- 系统管理员无权修改INDEPENDENT角色的表对象的属主。
- 系统管理员和拥有CREATEROLE属性的安全管理员无权去除INDEPENDENT角色的INDEPENDENT属性。
- 系统管理员和拥有CREATEROLE属性的安全管理员无权修改INDEPENDENT角色的数据库口令,INDEPENDENT角色需管理好自身口令,口令丢失无法重置。
- 管理员属性用户不允许定义修改为INDEPENDENT属性。
VALID BEGIN
设置角色生效的时间戳。如果省略了该子句,角色无有效开始时间限制。
VALID UNTIL
设置角色失效的时间戳。如果省略了该子句,角色无有效结束时间限制。
-
设置角色使用的resource pool名称,该名称属于系统表:pg_resource_pool。
USER GROUP
创建一个user的子用户。当前版本暂不支持。
PERM SPACE
设置用户使用空间的大小。
TEMP SPACE
设置用户临时表存储空间限额。
SPILL SPACE
设置用户算子落盘空间限额。
NODE GROUP
设置用户关联的逻辑集群名称。当前版本暂不支持。
IN ROLE
新角色立即拥有IN ROLE子句中列出的一个或多个现有角色拥有的权限。不推荐使用。
IN GROUP
IN GROUP是IN ROLE过时的拼法。不推荐使用。
ROLE
ROLE子句列出一个或多个现有的角色,它们将自动添加为这个新角色的成员,拥有新角色所有的权限。
ADMIN
ADMIN子句类似ROLE子句,不同的是ADMIN后的角色可以把新角色的权限赋给其他角色。
USER
USER子句是ROLE子句过时的拼法。
SYSID
SYSID子句将被忽略,无实际意义。
DEFAULT TABLESPACE
DEFAULT TABLESPACE子句将被忽略,无实际意义。
PROFILE
PROFILE子句将被忽略,无实际意义。