在Oracle数据库中,用户权限主要分为系统权限与对象权限两类。系统权限是指在数据库基本执行某些操作的权限,或针对某一类对象进行操作的权限,对象权限主要是针对数据库对象执行某些操作的权限,如对表的增删(删除数据)查改等。
4.1 系统权限
(4.1.1)系统权限概述
在Oracle 11g中,一共有200多项系统权限,可通过数据字典system_privilege_map获得所有的系统权限。
SQL> select * from system_privilege_map;
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-3 ALTER SYSTEM 0
-4 AUDIT SYSTEM 0
-5 CREATE SESSION 0
-6 ALTER SESSION 0
... ... ...
208 rows selected
(4.1.2)系统权限的授予
授予用户系统权限的SQL语法为:
GRANT system_privilege_list | [ALL PRIVILEGES] TO user_name_list | role_list | PUBLIC [WITH ADMIN OPTION];
其中:
-system_privilege_list:系统权限列表,以逗号分隔;
-ALL PRIVILEGES:所有系统权限;
-user_name_list:用户列表,以逗号分隔;
-role_list:角色列表,以逗号分隔;
-PUBLIC:给数据库中所有用户授权;
-WITH ADMIN OPTION:允许系统权限接收者再将权限授予其它用户
在授予用户系统权限时,需要注意:
只有DBA用户才有alter database;
应用开发者一般需要拥有create table、create view、create index等系统权限;
普通用户一般只需具有create session权限
在授权用户时带有with admin option子句时,用户可以将获得的权限再授予其它用户。
(4.1.3)系统权限的回收
回收用户系统权限的SQL语法如下:
REVOKE system_privilege_list | [ALL PRIVILEGES] FROM user_name_list | role_list | PUBLIC
回收用户系统权限需要注意以下3点:
多个管理员授予同一个用户相同的权限,其中一个管理员回收其授予用户的系统权限,该用户将不再具有该系统权限;
为了回收用户系统权限的传递性(授权时使用了with admin option),须先回收该系统权限,在重新授予用户该权限;
如果一个用户的权限具有传递性,并且给其它用户授权,那么该用户系统权限被收回后,其它用户的系统权限并不会受影响;
4.2 对象权限
对象权限是指对某个特定模式对象的操作权限。数据库模式对象所有者拥有该对象的所有对象权限,对象权限的管理实际上是对象所有者对其他用户操作该对象的权限管理。在Oracle数据库中,不同类型的对象具有不同的对象权限,而有的对象并没有对象权限,只能通过系统权限进行管理,如簇、索引、触发器、数据库链接等。
(1)对象权限的授予