用户管理
本博文是以SQL语句形式对用户进行管理。
数据库中,用户的管理是最基本的管理内容,包括创建、删除、限制等等一系列内容。
用户定义语句(语法与释义)
CREATE USER <用户名> IDENTIFIED <身份验证模式> [PASSWORD_POLICY <口令策略>][<
锁定子句>][<存储加密密钥>][<空间限制子句>][<只读标志>][<资源限制子句>][<允许 IP 子句>][<
禁止IP子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE子句>][<INDEX_TABLESPACE子句>]
<身份验证模式> ::= <数据库身份验证模式>|<外部身份验证模式>
<数据库身份验证模式> ::= BY <口令> [<散列选项>]
<散列选项> ::= HASH WITH [<密码引擎名>.]<散列算法> [<加盐选项>]
<散列算法> ::= <MD5 | SHA1 | SHA224 | SHA256 | SHA384 | SHA512>
<加盐选项> ::= [NO] SALT
<外部身份验证模式> ::= EXTERNALLY | EXTERNALLY AS <用户 DN>
<口令策略> ::= 口令策略项的任意组合
<口令策略>可以为以下值,或其任何组合:
0 无策略;
1 禁止与用户名相同;
2 口令长度不小于 9;
4 至少包含一个大写字母(A-Z);
8 至少包含一个数字(0-9);
16 至少包含一个标点符号(英文输入法状态下,除― 和空格外的所有符号)。
若为其他数字,则表示以上设置值的和,如 3=1+2,表示同时启用第 1 项和第 2 项
策略。当设置为 0 时,表示设置口令没有限制,但总长度不得超过 48 个字节。另外,若不
指定该项,则默认采用系统配置文件中 PWD_POLICY 所设值。
<锁定子句> ::= ACCOUNT LOCK | ACCOUNT UNLOCK
<存储加密密钥> ::= ENCRYPT BY <口令>
<空间限制子句> ::= DISKSPACE LIMIT <空间大小>| DISKSPACE UNLIMITED
空间限制子句用于限制用户使用的最大存储空间,以 M 为单位,取值范围为 1 到1048576,关键字 UNLIMITED 表示无限制;
<只读标志> ::= READ ONLY | NOT READ ONLY
只读标志表示该登录是否只能对数据库进行只读操作,默认为可读写;
<资源限制子句> ::= LIMIT <资源设置项>{,<资源设置项>}
<资源设置项> ::= SESSION_PER_USER <参数设置>|
CONNECT_IDLE_TIME <参数设置>|
CONNECT_TIME <参数设置>|
CPU_PER_CALL <参数设置>|
CPU_PER_SESSION <参数设置>|
MEM_SPACE <参数设置>|
READ_PER_CALL <参数设置>|
READ_PER_SESSION <参数设置>|
FAILED_LOGIN_ATTEMPS <参数设置>|
PASSWORD_LIFE_TIME <参数设置>|
PASSWORD_REUSE_TIME <参数设置>|
PASSWORD_REUSE_MAX <参数设置>|
PASSWORD_LOCK_TIME <参数设置>|
PASSWORD_GRACE_TIME <参数设置>
<参数设置> ::=<参数值>| UNLIMITED
<允许 IP 子句> ::= ALLOW_IP <IP 项>{,<IP 项>}
<禁止 IP 子句> ::= NOT_ALLOW_IP <IP 项>{,<IP 项>}
允许 IP 和禁止 IP 用于控制此登录是否可以从某个 IP 访问数据库,其中禁止 IP
优先。在设置 IP 时,可以利用*来设置网段,如 192.168.0.*。设置的允许和禁止 IP 需
要用双引号括起来;
<IP 项> ::= <具体 IP>|<网段>
<允许时间子句> ::= ALLOW_DATETIME <时间项>{,<时间项>}
<禁止时间子句> ::= NOT_ALLOW_DATETIME <时间项>{,<时间项>}
允许时间段和禁止时间段用于控制此登录是否可以在某个时间段访问数据库,其中
禁止时间段优先。设置的时间段中的日期和时间要分别用双引号括起来。在设置时间段时,
有两种方式:
1)具体时间段,如 2016 年 1 月 1 日 8:30 至 2006 年 2 月 1 日 17:00;
2)规则时间段,如 每周一 8:30 至 每周五 17:00。
口令策略、允许 IP、禁止 IP、允许时间段、禁止时间段和外部身份验证功能只在安全版本中提供。
<时间项> ::= <具体时间段> | <规则时间段>
<具体时间段> ::= <具体日期> <具体时间> TO <具体日期> <具体时间>
<规则时间段> ::= <规则时间标志> <具体时间> TO <规则时间标志> <具体时间>
<规则时间标志> ::= MON | TUE | WED | THURS | FRI | SAT | SUN
<TABLESPACE 子句> ::= DEFAULT TABLESPACE <表空间名>
<INDEX_TABLESPACE 子句> ::= DEFAULT INDEX TABLESPACE <表空间名>
用户默认表空间和索引默认表空间不能使用 SYSTEM、RLOG、ROLL、TEMP 表空间。
1) 用户名在服务器中必须唯一;
2)系统为一个用户存储的信息主要有:用户名、口令、资源限制;
3)用户口令以密文形式存储;
4)如果没有指定用户默认表空间,则系统指定 MAIN 表空间为用户的默认表空间;
5)如果没有指定用户默认索引表空间,则 HUGE 表的索引缺省存储在用户的默认表空
间中,普通表的索引缺省存储在表的聚集索引所在的表空间中。临时表的索引永远在 TEMP表空间;
6)系统预先设置了三个用户,分别为 SYSDBA、SYSAUDITOR 和 SYSSSO,其中
SYSDBA 具备 DBA 角色,SYSAUDITOR 具备 DB_AUDIT_ADMIN 角色,而 SYSSSO 具备
DB_POLICY_ADMIN 系统角色;
7)不指定<散列选项>时,默认使用 SHA512 算法;
注:设置允许IP子句时,务必确定允许的IP地址为真实可用地址,若该地址为虚拟机映射地址,会造成设置后,不能登录等。
示例,创建用户TEST,密码设置为TEST123456,该用户只允许192.168.234.132IP地址登录访问。
CREATE USER TEST IDENTIFIED BY TEST123456 ALLOW_IP "192.168.234.132";
下图为资源限制内容
修改用户语句
语法同用户定义语句,只是将CREATE关键字修改为ALTER即可。因释义相同,故不重复描述。
示例,修改用户TEST,允许所有IP地址登录访问。
ALTER USER TEST ALLOW_IP NULL;
删除用户语句(语法与释义)
DROP USER <用户名> [RESTRICT | CASCADE];
1.系统自动创建的三个系统用户 SYSDBA、SYSAUDITOR 和 SYSSSO 不能被删除;
2.具有 DROP USER 权限的用户即可进行删除用户操作;
3.执行此语句将导致 DM 删除数据库中该用户建立的所有对象,且不可恢复。如果要保存这些实体,请参考 REVOKE 语句;
4.如果未使用 CASCADE 选项,若该用户建立了数据库对象 (如表、视图、过程或函数),或其他用户对象引用了该用户的对象,或在该用户的表上存在其它用户建立的视图,DM 将返回错误信息,而不删除此用户;
5.如果使用了 CASCADE 选项,除数据库中该用户及其创建的所有对象被删除外,如果其他用户创建的表引用了该用户表上的主关键字或唯一关键字,或者在该表上创建了视图,DM 还将自动删除相应的引用完整性约束及视图依赖关系;
6.正在使用中的用户可以被删除,删除后重登录或者做操作会报错。
示例,删除用户TEST及相关数据引用完整性约束及视图依赖关系等。
DROP USER TEST CASCADE