VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

CREATE USER

功能描述

创建一个用户。

注意事项

  • 通过CREATE USER创建的用户,默认具有LOGIN权限。
  • 通过CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA。
  • 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。

语法格式

CREATE USER [IF NOT EXISTS] user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [ EXPIRED ] | DISABLE };

其中option子句用于设置权限及属性等信息。

{SYSADMIN | NOSYSADMIN}
    | {MONADMIN | NOMONADMIN}
    | {OPRADMIN | NOOPRADMIN}
    | {POLADMIN | NOPOLADMIN}
    | {AUDITADMIN | NOAUDITADMIN}
    | {CREATEDB | NOCREATEDB}
    | {USEFT | NOUSEFT}
    | {CREATEROLE | NOCREATEROLE}
    | {INHERIT | NOINHERIT}
    | {LOGIN | NOLOGIN}
    | {REPLICATION | NOREPLICATION}
    | {INDEPENDENT | NOINDEPENDENT}
    | {VCADMIN | NOVCADMIN}
    | {PERSISTENCE | PERSISTENCE}
    | CONNECTION LIMIT connlimit
    | VALID BEGIN 'timestamp'
    | VALID UNTIL 'timestamp'
    | RESOURCE POOL 'respool'
    | USER GROUP 'groupuser'
    | PERM SPACE 'spacelimit'
    | TEMP SPACE 'tmpspacelimit'
    | SPILL SPACE 'spillspacelimit'
    | NODE GROUP logic_cluster_name
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid
    | DEFAULT TABLESPACE tablespace_name
    | PROFILE DEFAULT
    | PROFILE profile_name
    | PGUSER

参数说明

  • user_name

    用户名称。

    取值范围:字符串,要符合标识符的命名规范。且最大长度不超过63个字符。

    若GUC参数b_compatibility_user_host_auth打开且在B数据库模式下,则支持以下特殊形式的语法:

    • 'user_name' @ 'host_name'。例如:'user1'@'127.0.0.%'。
    • 'user_name',例如:'user1'。但是不允许包含特殊字符@,例如:'user1@127.0.0.%'。
    • user_name@host_name。例如:user1@127.%.0.1。
  • password

    登录密码。

    密码规则如下:

    • 密码默认取值范围8-32个字符。
    • 不能与用户名及用户名倒序相同。
    • 至少包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、非字母数字字符(限定为~!@#$%^&*()-_=+|[{}];:,<.>/?)四类字符中的三类字符。
    • 密码也可以是符合格式要求的密文字符串,这种情况主要用于用户数据导入场景,不推荐用户直接使用。如果直接使用密文密码,用户需要知道密文密码对应的明文,并且保证明文密码复杂度,数据库不会校验密文密码复杂度,直接使用密文密码的安全性由用户保证。
    • 创建用户时,应当使用双引号或单引号将用户密码括起来。

    取值范围:字符串。

  • EXPIRED

    在创建用户时可指定EXPIRED参数,即创建密码失效用户,该用户不允许执行简单查询和扩展查询。只有在修改自身密码后才可正常执行语句。

  • DISABLE

    默认情况下,用户可以更改自己的密码,除非密码被禁用。要禁用用户的密码,请指定DISABLE。禁用某个用户的密码后,将从系统中删除该密码,此类用户只能通过外部认证来连接数据库,例如:kerberos认证。只有管理员才能启用或禁用密码。普通用户不能禁用初始用户的密码。要启用密码,请运行ALTER USER并指定密码。

  • ENCRYPTED | UNENCRYPTED

    控制密码存储在系统表里的口令是否加密。按照产品安全要求,密码必须加密存储,所以,UNENCRYPTED在Vastbase中禁止使用。因为系统无法对指定的加密口令字符串进行解密,所以如果目前的口令字符串已经是用SHA256加密的格式,则会继续照此存放,而不管是否声明了ENCRYPTED或UNENCRYPTED。这样就允许在dump/restore的时候重新加载加密的口令。

  • groupuser

    用户组名称。

    取值范围:字符串。

  • logic_cluster_name

    节点组名称。

    取值范围:字符串。

CREATE USER的其他参数值请参考CREATE ROLE

示例

1、创建用户jim,登录密码为Aa123456。

  • 方法1:

    CREATE USER jim PASSWORD 'Aa123456';
    
  • 方法2:

    CREATE USER jim IDENTIFIED BY 'Aa123456';
    

2、如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。

CREATE USER dim CREATEDB PASSWORD 'Aa123456';

3、将用户jim的登录密码由Aa123456修改为Abcd@123。

ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'Aa123456';

4、为用户jim追加CREATEROLE权限。

ALTER USER jim CREATEROLE;

5、一个角色也可以有角色相关的配置默认值,例如,如果出现某些原因用户希望在每次连接时开启顺序扫描,可以将enable_seqscan的值设置为on, 设置成功后,在下一会话中生效。

ALTER USER jim SET enable_seqscan TO on;

6、重置jim的enable_seqscan参数。

ALTER USER jim RESET enable_seqscan;

7、锁定jim帐户。

ALTER USER jim ACCOUNT LOCK;

8、删除用户。

DROP USER jim CASCADE;
DROP USER dim CASCADE;

相关链接

ALTER USERCREATE ROLEDROP USER