合理的用户和权限管理对于数据库系统的高效、安全、可靠是很关键的。ORACLE在用户及权限管理上有许多新的概念和特性。
说明:
对用户及权限的管理需要进入SQL*Plus交互工具。每一个SQL语句后要以分号“;”结束。退出交互工具命令为:quit
SQL命令语句及可选项不区分大小写,本文中出现大写的地方是强调作用。
每个ORACLE数据库都有许多合法用户,这些用户可以根据用户名和口令登录数据库,并使用SQL语言存取数据。
(1) 创建用户
创建用户命令格式 |
说 明 |
create user 用户名; |
创建用户的操作必须由DBA来做,一般用户无权创建用户。用户名必须是唯一的,即同一数据库中不能有两个相同的用户。 |
identified by 口令; |
为用户设置口令 |
default tablespace 表空间名; |
表示该用户存放数据的缺省表空间 |
temporary tablespace 表空间名; |
表明用户使用的缺省临时表空间名 |
quota 大小 on 表空间名; |
quota 可以限制用户在某个表空间上最多可使用多少字节 |
profile 资源文件; |
profile 为用户指定各种资源的使用 |
下面是一个创建用户的完整例子:
create user scott; |
identified by tiger; |
default tablespace data_ts; |
temporary tablespace temp_ts; |
quota 500K on data_ts; |
profile newprofile; |
(2) 修改用户
对用户的修改包括:口令字、缺省表空间、临时表空间、表空间限量、profile、缺省角色。角色是ORACLE7的一个新概念,我们在“权限管理”里再讨论。在这里可把角色看成具有某些权限的一个特殊用户。修改用户的缺省角色也就是为用户指明另一个权限的集合。下面举例说明修改用户的操作:
任 务 |
命 令 |
将scott的口令改为hello |
ALTER USER scott IDENTIFIED BY hello; |
将scott的缺省表空间改为data2_ts |
ALTER USER scott DEFAULT TABLESPACE data2_ts; |
将scott的临时表空间修改为temp2_ts |
ALTER USER scott TEMPORARY TABLESPACE temp2_ts; |
将scott的资源文件改为otherprofile |
ALTER USER scott PROFILE otherprofile; |
将scott的缺省角色改为DEVELOPER |
ALTER USER scott DEFAULT ROLE DEVELOPER; |
将当前系统所有角色都授予scott,除Payroll外 |
ALTER USER scott DEFAULT ROLE ALL EXCEPT Payroll; |
(3) 删除用户
删除用户的命令为:
DROP USER 用户名 [CASCADE];
若不使用CASCADE选项,则必须在该用户的所有实体都删除之后,才能删除该用户。使用CASCADE后,则不论用户实体有多大,都一并删除。
ORACLE的安全机制,是由系统权限、实体权限和角色权限这三级体系结构组成的。
权限类型 |
说 明 |
系统权限 |
是指对数据库系统及数据结构的操作权,例如创建/删除用户、表、同义词、索引等等 |
实体权限 |
是指用户对数据的操作权,如查询、更新、插入、删除、完整性约束等等 |
角色权限 |
是把几个相关的权限组成角色,角色之间可以进一步组合而成为一棵层次树,以对应于现实世界中的行政职位。角色权限除了限制操作权、控制权外,还能限制执行某些应用程序的权限。 |
这样的安全控制体系,使得整个系统的管理人员及程序开发人员能控制系统命令的运行、数据的操作及应用程序的执行。
(1) 系统权限
系统权限的授予命令为GRANT,例如把创建任何表视图的权限授予scott用户:
GRANT create any view TO scott;
系统权限的回收命令为REVOKE,例如将create any view 权限从scott用户手中收回:
REVOKE create any view FROM scott;
(2) 实体权限
每种类型的实体有与之相关的实体权限。
授予实体权限的命令举例(将EMP表上的Select和Insert权限授给scott):
GRANT select,insert ON emp TO scott;
回收实体权限的命令举例(将EMP表上的Select权限从scott手中回收):
REVOKE select ON emp FROM scott;
(3) 管理角色
角色是许多权限和角色的组合,它极大地方便了ORACLE的权限管理。
创建角色,如创建一个名为dept1的角色,口令字为hello:
CREATE ROLE dept1 IDENTIFIED BY hello;
使用角色,可以通过修改用户的缺省角色来使用角色,或通过授权的方法来将角色授予其它角色或用户。如将scott用户的缺省角色修改为DEVELOPER:
ALTER USER scott DEFAULT ROLE DEVELOPER;
将角色dept1授予manager角色:
GRANT manager TO scott;
使角色生效或失效,DBA可以通过控制角色的生效或失效,来暂时回收用户的一部分权限。如使dept1角色失效:
SET ROLE dept1 DISABLE;
删除角色,这将会影响到拥有该角色的用户和其它角色的权限。用DROP ROLE命令删除角色,如:
DROP ROLE dept1;