CREATE USER

功能描述

创建一个用户。

注意事项

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

语法格式

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

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

1. {SYSADMIN | NOSYSADMIN}
2. | {MONADMIN | NOMONADMIN}
3. | {OPRADMIN | NOOPRADMIN}
4. | {POLADMIN | NOPOLADMIN}
5. | {AUDITADMIN | NOAUDITADMIN}
6. | {CREATEDB | NOCREATEDB}
7. | {USEFT | NOUSEFT}
8. | {CREATEROLE | NOCREATEROLE}
9. | {INHERIT | NOINHERIT}
10. | {LOGIN | NOLOGIN}
11. | {REPLICATION | NOREPLICATION}
12. | {INDEPENDENT | NOINDEPENDENT}
13. | {VCADMIN | NOVCADMIN}
14. | {PERSISTENCE | PERSISTENCE}
15. | CONNECTION LIMIT connlimit
16. | VALID BEGIN 'timestamp'
17. | VALID UNTIL 'timestamp'
18. | RESOURCE POOL 'respool'
19. | USER GROUP 'groupuser'
20. | PERM SPACE 'spacelimit'
21. | TEMP SPACE 'tmpspacelimit'
22. | SPILL SPACE 'spillspacelimit'
23. | NODE GROUP logic_cluster_name
24. | IN ROLE role_name [, ...]
25. | IN GROUP role_name [, ...]
26. | ROLE role_name [, ...]
27. | ADMIN role_name [, ...]
28. | USER role_name [, ...]
29. | SYSID uid
30. | DEFAULT TABLESPACE tablespace_name
31. | PROFILE DEFAULT
32. | PROFILE profile_name
33. | PGUSER

参数说明

  • IF NOT EXISTS

如果已经存在相同名称的用户,不会报出错误,而会发出通知,告知通知此用户已存在。 - user_name

用户名称。

取值范围:

  • 字符串,要符合标识符的命名规范。且最大长度不超过63个字符。
  • 若GUC参数test_user_host打开且在b数据库模式下,则支持以下特殊形式的语法。
    • ‘user_name’ @ ‘host_name’。例如:’user1’@’127.0.0.%’。
    • ‘user_name’,例如:’user1’。但是不允许包含特殊字符@,例如:’user1@127.0.0.%’。
    • user_name@host_name。例如:user1@127.%.0.1。 其中user_name是符合命名规范的标识符(可包含特殊字符%),host_name是IP地址,由数字,’.’和’%’组成,另外host_name还可以是localhost。 另外该取值的用户只能连接b库,而且连接的时候b_compatibility_user_host_auth要打开。
  • password

登录密码。

密码规则如下:

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

取值范围:字符串。

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

示例

1. --创建用户jim,登录密码为xxxxxxxxx。
2. openGauss=# CREATE USER jim PASSWORD 'xxxxxxxxx';

4. --下面语句与上面的等价。
5. openGauss=# CREATE USER kim IDENTIFIED BY 'xxxxxxxxx';

7. --如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。
8. openGauss=# CREATE USER dim CREATEDB PASSWORD 'xxxxxxxxx';

10. --将用户jim的登录密码由xxxxxxxxx修改为Abcd@123。
11. openGauss=# ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'xxxxxxxxx';

13. --为用户jim追加CREATEROLE权限。
14. openGauss=# ALTER USER jim CREATEROLE;

16. --将enable_seqscan的值设置为on, 设置成功后,在下一会话中生效。
17. openGauss=# ALTER USER jim SET enable_seqscan TO on;

19. --重置jim的enable_seqscan参数。
20. openGauss=# ALTER USER jim RESET enable_seqscan;

22. --锁定jim帐户。
23. openGauss=# ALTER USER jim ACCOUNT LOCK;

25. --删除用户。
26. openGauss=# DROP USER kim CASCADE;
27. openGauss=# DROP USER jim CASCADE;
28. openGauss=# DROP USER dim CASCADE;

相关链接

ALTER USER,CREATE ROLE,DROP USER