且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

oracle权限一则

更新时间:2022-09-16 23:19:43

oracle的权限分为系统权限与对像权限两种.系统权限主要用于数据库的管理任务,权利比较大,
而对像权限主要用于数据库内的对像,如表等。这里只记录授权与回收的SQL方法。
系统权限授权:grant create session/dba to a [with admin option];
对像权限授权:grant select on sys.anran to a [with grant option];

这里有两个选项with admin option/with grant option,其实功能差不多,只是一个用在系统
权限授权,另一个用在对像权限授权。带有这两种选择的grantee(被授权者)有授予其他人该权限的
能力。

需要什么权限才可以给别授权呢?前面是一种情况,带有with admin option/with grant option选项的grantee.

还有一种情况是:对于系统权限来说拥有GRANT ANY PRIVILEGE权限的grantee(如果是授予角色[grant
 a_role to a],则是拥有GRANT ANY ROLE权限的grantee,这里可以把角色理解为一种系统权限的)有权grant。
对于对像权限来说是拥有GRANT ANY OBJECT PRIVILEGE权限的grantee。
系统权限回收:revoke create session from a;
对像权限回收:revoke select on sys.anran from a;

语法基本相同,但revoke在回收系统权限时没有cascade功能,而收回对像权限时却是一插到底。
比如:a授权给用户b系统权限带有with admin option,b又授权给用户c该权限,当用户a从用户b收回权限时,
并不会收回用户c的权限,有点覆水难收的意思,但如果是对像权限却会回收C的权根.

需要什么权限才可以收回权限呢?对于系统权限带有with admin option选项的grantee,当然可以,无论权限
是否是他亲自授予。但拥有GRANT ANY PRIVILEGE权限的人却没有这个能力。但有一个例外拥有GRANT ANY ROLE 权限的人可以revoke any role。

对于对像权限带有with grant option选项的grantee,当然可以,但是权限必须是他亲自授予的。另外拥有 
GRANT ANY OBJECT PRIVILEGE 权限的grantee也具有此能力。

哎呀,真够头大的。


本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/380283