#CREATE USER
# 通用描述
CREATE USER用于新建一个数据库用户。系统默认创建的是普通用户,YashanDB的用户管理体系请参考产品安全手册用户管理。
# 语句定义
create user::=
# 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;