创建与管理用户账户
用户是Oracle数据库管理的常用要求之一,能够连接到数据库的每一个用户都必须是系统的合法用户。用户要想使用Oracle的管理系统,必须要拥有相应的权限。创建用户并授予权限是Oracle系统管理员的常用任务之一。
1.1 配置身份验证
Oracle为用户账户提供了三种身份验证方法。
(1)密码验证
当一个使用密码验证机制的用户试图连接到数据库时,数据库会核实用户名是否是一个有效的数据库账户,并且提供与该用户在数据库中存储的密码相匹配的密码。
由于用户信息和密码都存储在数据库内部,所以密码验证用户也称为数据库验证用户。
(2)外部验证
当一个外部验证式用户试图连接到数据库时,数据库会核实用户名是否是一个有效的数据库账户,并确信该用户已经完成了操作系统级别的身份验证。
注意,外部验证式用户并不在数据库中存储一个验证密码。
(3)全局验证
全局验证式用户也不在数据库中存储验证密码,这种类型的验证是通过一个高级安全选项所提供的身份验证服务来进行的。
在上述的三种验证方式中,密码验证是最常使用的验证用户的方法,也是我们将要详细介绍的。除非特别声明,本书中所创建和使用的用户都是密码验证用户。
另外两种验证一般很少使用,在这里仅简单列出,有兴趣的读者可以查阅Oracle的官方文档。
1.2 创建用户的语法
要创建一个新的用户(密码验证用户),可以采用CREATE USER命令。
CREATE USER username IDENTIFIED BY password
OR IDENTIFIED EXETERNALLY
OR IDENTIFIED GLOBALLY AS ‘CN=user’
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE temptablespace]
[QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace
[,QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace
[PROFILES profile_name]
[PASSWORD EXPIRE]
[ACCOUNT LOCK or ACCOUNT UNLOCK]
其中,
? CREATE USER username:用户名,一般为字母数字型和“#”及“_”符号。
? IDENTIFIED BY password:用户口令,一般为字母数字型和“#”及“_”符号。
? IDENTIFIED EXETERNALLY:表示用户名在操作系统下验证,该用户名必须与操作系统中所定义的用户名相同。
? IDENTIFIED GLOBALLY AS ‘CN=user’:用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名。
? [DEFAULT TABLESPACE tablespace]:默认的表空间。
? [TEMPORARY TABLESPACE tablespace]:默认的临时表空间。
? [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace:用户可以使用的表空间的字节数。
? [PROFILES profile_name]:资源文件的名称。
? [PASSWORD EXPIRE]:立即将口令设成过期状态,用户再登录前必须修改口令。
? [ACCOUNT LOCK or ACCOUNT UNLOCK]:用户是否被加锁,默认情况下是不加锁的。
1.3 创建用户实例
本节通过具体实例演示如何创建数据库用户。
(1)创建用户,指定默认表空间和临时表空间。
创建用户名为guord,口令为12345,默认表空间为system,临时表空间为TEMP的用户。
示例1:
CREATE USER guord IDENTIFIED BY 12345
DEFAULT TABLESPACE system
TEMPORARY TABLESPACE TEMP;
有时,为了避免用户在创建表和索引对象时占用过多的空间,可配置用户在表空间上的磁盘限额,在创建用户时通过QUOTA xxxM ON tablespace_name 子句即可。
(2)创建用户,并配置磁盘限额。
创建一个用户名为guord,口令为12345,默认表空间为system,临时表空间为TEMP的用户,并且不允许该用户使用Users表空间。
示例2:
CREATE USER guord IDENTIFIED BY 12345
DEFAULT TABLESPACE system
TEMPORARY TABLESPACE TEMP
QUOTA 0 ON users;