#CREATE USER

# 通用描述

CREATE USER用于新建一个数据库用户。系统默认创建的是普通用户,YashanDB的用户管理体系请参考产品安全手册用户管理

# 语句定义

create user::=

syntax
CREATE USER user_name IDENTIFIED BY VALUES password DEFAULT TABLESPACE tablespace PROFILE profilename

# user_name

该语句用于指定创建的用户的名称,不可省略,且需符合YashanDB的对象命名规范

# values

该语句用于指定按密文创建用户的密码,可省略,则按明文创建密码。

YashanDB的密码策略为加密传输和加密存储,即服务端存储的是密文密码。在某些特定场景(例如数据库迁移),可通过直接指定密文来创建密码,该操作不影响用户前端输入明文密码登录。

# identified by password

该语句用于指定创建的用户的密码,可省略,省略则默认无密码。

该语句需满足如下规则:

  • 不可指定为NULL或''。
  • 可以为数字、字母和特殊符号的组合。
  • 密码字符不可以为双引号。
  • 当包含%\;@/等特殊符号时,密码字符串前后需加双引号。
  • 区分大小写。
  • 密码字符串长度不超过64。
  • 遵循安全手册中所制定的密码策略要求。

Note

YashanDB无法连接至无密码的用户中,建议创建用户时执行本语句指定新用户密码。

当指定VALUES时,password内容须为密文格式,不遵循上述规则,但需符合如下基本格式要求,否则创建用户失败且提示YAS-04289错误:

  • 必须以S:开头。
  • 整个长度必须是86字节。
  • S:后只能是数字和大写的字母。

@和/的特殊处理

YashanDB允许在密码中包含@/等特殊符号,在输入密码进行登录时,包含@/的密码字符串前后也必须使用双引号标识。

此外需注意的是,在Linux OS命令行模式中,双引号为特殊含义字符,对其的使用需用\进行转义或由单引号包裹。

示例

--创建user1和user2两个用户,其中user2用户密码包含了@和/
CREATE USER user1 IDENTIFIED BY "1%2";
CREATE USER user2 IDENTIFIED BY "1@2/";

--在SQL客户端连接时应输入的密码格式
conn user1/1%2
conn user2/"1@2/"

--在命令行连接时应输入的密码格式
$ yasql user1/1%2
$ yasql user2/\"1@2/\"

# tablespace

该语句用于指定创建的用户的默认表空间,可省略,则缺省为数据库创建时的DEFAULT表空间。

示例

CREATE USER user1 IDENTIFIED BY 123 DEFAULT TABLESPACE users;

# profile

该语句用于为创建的用户指定对应的profile,profile见CREATE PROFILE中描述。

本语句可省略,则缺省对应系统默认的profile。

示例

CREATE USER user1 IDENTIFIED BY 123 PROFILE DEFAULT;