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也具有此能力。
哎呀,真夠頭大的。