GaussDB-CREATE USER
功能描述
创建一个带有指定密码的新用户,用户是GaussDB数据库认证的基本元素,您可以通过正确的用户名和密码登录GaussDB数据库,然后授权不同的用户拥有不同的权限,以便不同的用户进行不同的操作。
注意事项
- 通过CREATE USER创建的用户,默认具有LOGIN权限。
- 通过CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA。
- 系统管理员在普通用户同名SCHEMA下创建的对象,所有者为SCHEMA的同名用户(非系统管理员)。
语法格式
| ``` CREATE USER 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} | {PERSISTENCE | NOPERSISTENCE} | 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**
user_name为要创建的用户名称。
取值范围:字符串,要符合[标识符命名规范](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0321.html#ZH-CN_TOPIC_0000001865746364__zh-cn_topic_0000001704458709_section14873217506)。且最大长度不超过63个字符。

当用户名中包含大写字母时数据库将自动转换为小写字母,如果需要创建包含大写字母的用户名则需要使用双引号括起来。
- **password**
登录密码。
密码规则如下:
- 密码默认不少于8个字符。
- 不能与用户名及用户名倒序相同。
- 至少包含大写字母(A~Z)、小写字母(a~z)、数字(0~9)和非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。当密码中包含的字符不属于上述四种字符范围内时语句执行会报错。
- 密码也可以是符合格式要求的密文字符串,这种情况主要用于用户数据导入场景,不推荐用户直接使用。如果直接使用密文密码,用户需要知道密文密码对应的明文,并且保证密码复杂度,数据库不会校验密文密码复杂度,直接使用密文密码的安全性由用户保证。
- 创建用户时,应当使用单引号将用户密码括起来。
取值范围:字符串。
CREATE USER的其他参数值请参考[CREATE ROLE参数说明](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0561.html#ZH-CN_TOPIC_0000001865745736__zh-cn_topic_0000001656059524_zh-cn_topic_0059778189_s5a43ec5742a742089e2c302063de7fe4)。
#### 示例
--创建用户jim,登录密码为********。 gaussdb=# CREATE USER jim PASSWORD '********';
--创建用户kim,登录密码为********。 gaussdb=# CREATE USER kim IDENTIFIED BY '********';
--创建用户tom。 gaussdb=# CREATE USER TOM PASSWORD '********';
--创建用户TOM。 gaussdb=# CREATE USER "TOM" PASSWORD '********';
--如果需要创建具有“创建数据库”权限的用户,则需要加CREATEDB关键字。 gaussdb=# CREATE USER dim CREATEDB PASSWORD '********';
--查看用户dim的权限。 gaussdb=# \du dim List of roles Role name | Attributes | Member of -----------+------------+----------- dim | Create DB | {} (可以看到用户dim具有CREATEDB的权限)
--修改jim用户密码。 gaussdb=# ALTER USER jim IDENTIFIED BY '**********' REPLACE '********';
--为用户jim追加CREATEROLE权限。 gaussdb=# ALTER USER jim CREATEROLE;
--查看用户jim追加的CREATEROLE权限。 gaussdb=# \du jim List of roles Role name | Attributes | Member of -----------+-------------+----------- jim | Create role | {}
--锁定jim账户。 gaussdb=# ALTER USER jim ACCOUNT LOCK;
--解锁jim账户。 gaussdb=# ALTER USER jim ACCOUNT UNLOCK;
--修改用户密码。 gaussdb=# ALTER USER dim WITH PASSWORD '********';
--修改用户名。 gaussdb=# ALTER USER dim RENAME TO lisa;
--删除用户。 gaussdb=# DROP USER kim CASCADE; gaussdb=# DROP USER jim CASCADE; gaussdb=# DROP USER lisa CASCADE; gaussdb=# DROP USER TOM CASCADE; gaussdb=# DROP USER "TOM" CASCADE;
#### 相关链接
[ALTER USER](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0516.html#ZH-CN_TOPIC_0000001865745740),[CREATE ROLE](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0561.html#ZH-CN_TOPIC_0000001865745736),[DROP USER](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0625.html#ZH-CN_TOPIC_0000001911585009)
更多详情请参考GaussDB 文档中心:<https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html>