Oracle用戶根據所被授予的權限分為系統權限和對象權限。這裡我們主要介紹介紹創建角色、角色賦權、回收角色權限等方面。下面我們來一一進行解析。
一、創建Oracle用戶
Create role clerk identifIEd by bicentennial;
以上命令創建一個名為clerk的角色,他的密碼為bicentennial,當角色被授予某個用戶時,必須使用密碼進行驗證。如果不指定identifIEd子句,則數據庫使用not identifIEd,這時激活角色不需要認證。
二、Oracle用戶權限
1.授予角色系統權限和角色
如果要給某個角色授權,你必須需要具有以下權限:
1)如果要授予系統權限,你自已必須被授與此權限時,包括Admin Option或擁有GRANT ANY PRIVILEGE系統權限。
2)如果授與角色,你必須被授予與此角色時包括Admin Option或擁有GRANT ANY ROEL 系統角色。Grant create session to jward;
a)授予Admin Option
Grant new_dba to michal with admin option;
如果一個用戶或角色被授權的同時指定with admin option子句,則有以下效果:
i.該用戶或角色可以將此權限賦與任何其他用戶,或從其他用戶回收此權限。
ii.這個用戶或角色可以將此權限的管理權傳遞給任何用戶。
iii.被授予角色的用戶可以修改或drop角色。
b)在賦權的同時創建用戶
Oracle允許你在grant的同時創建一個新用戶,如果你通過一個identifIEd by子句指定一個密碼,而用戶名/密碼不存在數據庫中,一個新用戶就將被創建。
c)Grant connect to ssmith identifIEd by p1q2r3;
2.授予object角色
如果你要將某個object的權限授予某個用戶,你必須符合以下條件:你擁有指定的object;你擁有GRANT ANY OBJECT PRIVELEGE系統權限;你被賦與此Object權限包括WITH GRANT OPTION。
Grant select,insert,delete om emp to jfee,tsmith;
Grant all on emp to jfee;
a)授予Grant Option
如你指定with grant option,被授權的用戶將獲得以下Oracle用戶權限:
i被授權的用戶可以授予任何用戶此對像的權限
ii如果被授權的用戶擁有Create view或Create any vIEw系統權限,則用戶可以在此表上創建一個視圖,同時賦權給其他用戶訪問。
3.在列上授權
你可以在單獨的列上授予用戶插入、修改、刪除權限:Grant insert (acct_no) on accounts to scott;
三、回收Oracle用戶權限
1.回收系統權限
任何擁有指定系統權限的ADMIN OPTION或擁有權限管理權限的用戶都可以從任何用戶上回收指定權限Revoke create table from tsmith;
這裡要注意,ADMIN OPTION不能作為權限單獨回收。
2.回收Object權限
為了回收Object權限,必須符合以下條件:此權限是由你之前賦與用戶或角色的;你擁有GRANT ANY OBJECT PRIVILEGE權限。
注意:一個擁有GRANT OPTION的用戶,如果Object對像被回收,則所有由它賦權的用戶的相應權限都將被回收
Revoke all on dept from human_resource;
四、賦權與回收的生效時間
關於系統權限或Object權限的賦權與回收都是立即生效的。將角色同授予某個用戶或從用戶回收將在下一次新建session時生效,除非使用Set指定。在session中,用戶可以使用set role來改變role:Set role ckerk identified by bicentennial; 如果用戶有密碼則必須使用identifIEd by 指定關閉所有角色Set role none。
五、指定用戶缺省權限
當用戶登陸時,Oracle自動將用戶缺省角色中的權限賦與用戶。Alter user jane default role payclerk,pettycash