Oracle权限授权管理

Oracle的权限主要有系统权限和对象权限两种。系统权限主要是连接权限(session)、user权限等,系统权限主要是对数据库具有系统级的操作。对象权限,指的是对数据库对象具有特定操作的权限。

Oracle授予权限的对象可以是用户,也可以是角色。授予权限的操作包括授予系统权限或对象权限给用户(或角色)。

我们在进行授予权限时候,要注意,系统权限的授予必须具有DBA权限的用户进行授权。如:sys、system用户。对象权限的授予,可以使用对象所有者的用户进行授权,或者使用具有DBA用户的进行授权


授予系统权限

授予系统权限的语法结构:

grant system_privilege|all privileges to user|role
[with admin option]

语法解析:

1、grant system_privilege|all privileges :指定授予什么权限。system_privilege:授予的权限名称,all privileges:指授予所有系统权限。

2、user|role:授予权限给用户还是角色。

3、[with admin option]:指的是当前被授权的用户具有授权给其它用户系统权限的权利。


例1、给用户teacher授予系统的create session权限,代码如下:

grant create session to TEACHER;

通过查询数据字典dba_sys_privs可以查询一下TEACHER的系统权限。

Oracle权限授权管理


授予对象权限

授予对象权限的语法结构如下:

grant obj_privilege|all 
on obj_name  to user|role
[with grant option]

语法解析:

1、grant obj_privilege|all:给指定用户授予对象权限,all:指的是授予全部对象权限。

2、on obj_name to user|role:指的是把对象obj_name的权限授予给用户user或者角色role。

3、with grant option:指定是当前被授权的用户具有授权给其它用户该对象权限的权利。这里with grant option对应对象的授权是级联,而对于上面系统权限的with admin option的授权不是级联的,回收该用户的权限,不会把授予给别人的权限收回,而级联授权的就会把对应的权限都收回。


例2、把student用户下的学生信息表(stuinfo)授权给teacher用户,代码如下:

grant select on student.stuinfo to teacher with grant option;

然后通过查询数据字典dba_tab_privs查看下teacher用户具有的对象权限:

Oracle权限授权管理

注意:给用户授权时,要注意自己是不能为自己授权的,要么利用第三方具有该对象授权权限的用户进行授权,或者利用具有DBA权限的用户授权。