创建用户
主要语法结构
语法格式
sql
CreateUserStmt::=
CREATE USER user_name [ LOGIN alias_name ] IDENTIFIED BY 'password'
[ DEFAULT ROLE role_name_1[, role_name_2[, ...] ] ]
[ VALID UNTIL date_time_expr ]
[ ACCOUNT { LOCK | UNLOCK } ]
[ PASSWORD EXPIRE ]
[ opt_trust_ip ]
[ opt_user_quotas ]
[ ENCRYPT BY 'encryptor_name' ]
参数说明
user_name
:要创建的用户名。alias_name
:用户的别名。password
:用户口令字符串。role_name_1, role_name_2, ...
:角色名。VALID UNTIL date_time_expr
:用户有效期截止时间的字符串,格式为日期或日期时间。ACCOUNT { LOCK | UNLOCK }
:账户是否锁定。PASSWORD EXPIRE
:密码失效。opt_trust_ip
:IPV4地址表达式,外部用单引号包裹。表达式可以为如下形式:- 单个IP地址:例如
'192.168.2.21'
。 - 多个IP地址:用逗号分隔的多个地址,例如
'192.168.2.21,192.168.2.22,192.168.2.105'
。 - IP地址范围;用减号分隔的地址上下界,例如
'192.168.2.20-192.168.2.29'
。 - 任意IP地址:关键字
'ANY'
。
- 单个IP地址:例如
opt_user_quotas
:设置用户在数据库中各种资源上的配额限制。encryptor_name
:加密机(即加密用的密钥)的名称。加密机相关内容请参见《数据加密指南》。
资源配额限制opt_user_quotas
语法格式
sql
opt_user_quotas::=
QUOTA int_value quantity_unit ON MEMORY
| QUOTA UNLIMITED ON MEMORY
| QUOTA int_value quantity_unit ON TEMP TABLESPACE
| QUOTA UNLIMITED ON TEMP TABLESPACE
| QUOTA int_value quantity_unit ON UNDO TABLESPACE
| QUOTA UNLIMITED ON UNDO TABLESPACE
| QUOTA int_value ON CURSOR
| QUOTA UNLIMITED ON CURSOR
| QUOTA int_value ON SESSION
| QUOTA UNLIMITED ON SESSION
| QUOTA int_value ON IO
| QUOTA UNLIMITED ON IO
| QUOTA int_value ON PROCEDURE
| QUOTA UNLIMITED ON PROCEDURE
| QUOTA int_value quantity_unit ON TABLESPACE
| QUOTA UNLIMITED ON TABLESPACE
参数说明
int_value
:设置的数值,取值为整数。quantity_unit
:设置数值的单位。例如要设置的资源配额为临时表空间,则单位可以为M、G等。UNLIMITED
:无限制。MEMORY
:内存配额。TEMP TABLESPACE
:临时表空间配额。UNDO TABLESPACE
:回滚表空间配额。CURSOR
:游标配额。SESSION
:会话配额。IO
:I/O配额。PROCEDURE
:存储过程配额。TABLESPACE
:表空间配额。
示例
创建一个名为
usr_test
的用户,具有以下属性:- 登录别名为
ut
。 - 登录密码为
123QWEasd!@
。 - 默认角色为
role_1
和role_2
。 - 用户有效期截至
2024-12-31 12:00:00
。 - 账户状态为
ACCOUNT LOCK
锁定状态。 - 临时表空间配额
QUOTA 20 MB ON TEMP TABLESPACE
,为用户设置了20 MB的临时表空间配额。
sqlSQL> CREATE USER usr_test LOGIN ut IDENTIFIED BY '123QWEasd!@' DEFAULT ROLE role_1, role_2 VALID UNTIL '2021-12-31 12:00:00' ACCOUNT LOCK QUOTA 20 M ON TEMP TABLESPACE;
- 登录别名为
使用
ACCOUNT LOCK
创建用户,支持对用户进行创建对象、授权操作,切换与登录报错。sql-- 创建用户 SQL> CREATE USER user_test IDENTIFIED BY '123QWE$$&' ACCOUNT LOCK; -- 用户下创表 SQL> CREATE TABLE user_test.t1(id INT); SQL> INSERT INTO user_test.t1 VALUES(1); SQL> SELECT * FROM user_test.t1; ID | ------------------------------------------------------------------------------ 1| -- 授权与回收权限 SQL> GRANT DBA TO user_test; SQL> REVOKE DBA FROM user_test; -- 切换用户失败 SQL> SET SESSION AUTHORIZATION user_test; [E18063] 切换用户失败,账户已锁定 -- 登录用户失败 SQL> USE SYSTEM USER = user_test PASSWORD = '123QWE$$&'; [E18019] 登录验证失败 -- 解锁 SQL> ALTER USER user_test ACCOUNT UNLOCK; -- 切换用户成功 SQL> SET SESSION AUTHORIZATION user_test; -- 切换回SYSDBA SQL> SET SESSION AUTHORIZATION SYSDBA; -- 登录用户成功 SQL> USE SYSTEM USER = user_test PASSWORD = '123QWE$$&'; -- 登录回SYSDBA SQL> USE SYSTEM USER = SYSDBA PASSWORD = 'SYSDBA';
使用
PASSWORD EXPIRE
创建用户,支持对用户进行创建对象、授权操作,切换与登录报错。sql-- 创建用户 SQL> CREATE USER user_test_2 IDENTIFIED BY '123qwe###' PASSWORD EXPIRE; -- 用户下创表 SQL> CREATE TABLE user_test_2.t2(id INT); SQL> INSERT INTO user_test_2.t2 VALUES(1); SQL> SELECT * FROM user_test_2.t2; ID | ------------------------------------------------------------------------------ 1| -- 授权与回收权限 SQL> GRANT DBA TO user_test_2; SQL> REVOKE DBA FROM user_test_2; -- 切换用户失败 SQL> SET SESSION AUTHORIZATION user_test_2; [E18064] 切换用户失败,密码已失效 -- 登录用户失败 SQL> USE SYSTEM USER = user_test_2 PASSWORD = '123qwe###'; [E18019] 登录验证失败 -- 修改用户密码 SQL> ALTER USER user_test_2 IDENTIFIED BY 'pass_1234'; -- 切换用户成功 SQL> SET SESSION AUTHORIZATION user_test_2; -- 切换回SYSDBA SQL> SET SESSION AUTHORIZATION SYSDBA; -- 登录用户成功 SQL> USE SYSTEM USER = user_test_2 PASSWORD = 'pass_1234'; -- 登录回SYSDBA SQL> USE SYSTEM USER = SYSDBA PASSWORD = 'SYSDBA';
使用
VALID UNTIL
创建用户,支持对用户进行创建对象、授权操作,切换与登录报错。sql-- 创建用户 SQL> CREATE USER user_test_3 IDENTIFIED BY '123qwe###' VALID UNTIL '2008-08-08'; -- 用户下创表 SQL> CREATE TABLE user_test_3.t3(id INT); SQL> INSERT INTO user_test_3.t3 VALUES(1); SQL> SELECT * FROM user_test_3.t3; ID | ------------------------------------------------------------------------------ 1| -- 授权与回收权限 SQL> GRANT DBA TO user_test_3; SQL> REVOKE DBA FROM user_test_3; -- 切换用户失败 SQL> SET SESSION AUTHORIZATION user_test_3; [E18062] 切换用户失败,时间已过期 -- 登录用户失败 SQL> USE SYSTEM USER = user_test_3 PASSWORD = '123qwe###'; [E18019] 登录验证失败 -- 修改用户时间 SQL> ALTER USER user_test_3 VALID UNTIL '2099-10-1'; -- 切换用户成功 SQL> SET SESSION AUTHORIZATION user_test_3; -- 切换回SYSDBA SQL> SET SESSION AUTHORIZATION SYSDBA; -- 登录用户成功 SQL> USE SYSTEM USER = user_test_3 PASSWORD = '123qwe###'; -- 登录回SYSDBA SQL> USE SYSTEM USER = SYSDBA PASSWORD = 'SYSDBA';