Oracle学习一 oracle中的用户管理
创建与管理用户账户
用户是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;
(3)配置用户在指定表空间上不受限制。
创建一个用户名为test,口令为12345,默认表空间为users,并且该用户使用users表空间不受限制。
示例3:
CREATE USER test IDENTIFIED BY 12345
DEFAULT TABLESPACE users
QUOTA UNLIMITED ON users;
在创建用户时,以下几点特别需要特别注意。
ž 初始建立的数据库用户没有任何权限,不能执行任何数据库操作。
ž 如果建立用户时不指定DEFAULT TABLESPACE子句,Oracle会将SYSTEM表空间作为用户默认表空间。
ž 如果建立用户时不指定TEMPORARY TABLESPACE子句,Oracle会将数据库默认临时表空间作为用户的临时表空间。
ž 如果建立用户时没有为表空间指定QUOTA子句,那么用户在特定表空间上的配额为0,用户将不能在相应表空间上建立数据对象。
ž 初始建立的用户没有任何权限,所以为了使用户可以连接到数据库,必须授权其CREATE SESSION权限,我们将在15.2节中讲述。
1.4 修改用户语法与实例
用户创建完成后,管理员可以对用户进行修改,包括修改用户口令、改变用户默认表空间、临时表空间、磁盘配额及资源限制等。修改用户的命令语法如下。
ALTER 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]
[DEFAULT ROLE role[,role]]
OR [DEFAULT ROLE ALL [EXCEPT role[,role]]]
OR [DEFAULT ROLE NOTE]
其中,各个参数的含义读者可以参照前面CRREATE USER语法中的解释,这里不再赘述。
如果DBA在创建用户时,指定了用户在某个表空间的磁盘限额,那么经过一段时间,该用户使用该表空间已经达到了DBA所设置的磁盘限额时,Oracle系统会给出类似于下面的错误提示。
ORA-01536:SPACE QUOTA EXCEEDED FOR TABLESPACE ‘USERS’
此时,DBA应该及时通过ALTER USER命令增加用户在该表空间中的使用限额。
(1)修改用户的磁盘限额。
当Oracle系统提示ORA-01536错误时,表示该用户的资源超出限额,需要为用户增加资源。
示例1:
SQL>SQLPLUS SYSTEM/password
SQL>ALTER USER wbtest QUOTA 100M ON USERS;
通过上述命令,将用户wbtest在USERS表空间上的磁盘限额扩展到100M。
(2)修改用户的口令。
将SCOTT用户的口令改为tigerabc。
示例2:
SQL>alter user scott identified by tigerabc;
Oracle默认安装完成后,为了安全起见,很多用户处于LOCKED状态,可以对LOCKED状态的用户解除锁定。
(3)查询Oracle系统中被锁住的用户信息。
示例3:
SQL>select username,account_status,lock_date from dba_users;
USERNAME ACCOUNT_STATUS LOCK_DTAE
--------------------------------------------------------------------------------------
SYS OPEN
SYSTEM OPEN
DBSNMP OPEN
HOUSE OPEN
SCOTT OPEN
OE OPEN
OUTLN EXPIRED&LOCKED 18-8月 -07
WMSYS EXPIRED&LOCKED 18-8月 -07
ORDSYS EXPIRED&LOCKED 18-8月 -07
MDSYS EXPIRED&LOCKED 18-8月 -07
(4)使用ALTER USER解锁被锁住的MDSYS用户。
SQL>show user;
USER 为“SYSTEM”
SQL>alter user MDSYS account unlock;
用户已更改。
15.1.5 删除用户
删除用户是通过DROP USER命令完成的,删除用户后,Oracle会从数据字典中删除用户、方案及其所有对象方案,语法如下:
DROP USER user [CASCADE]
如果用户包含数据库对象,则必须加CASCADE选项,此时连同该用户所拥有的对象一起删除。
引用