Oracle角色
一、概述
角色就是相關(guān)權(quán)限的命令集合,使用角色的主要目的就是為了簡化權(quán)限的管理。假定有用戶a,b,c為了讓他們都擁有權(quán)限
1、連接數(shù)據(jù)庫
2、在scott.emp表上select,insert,update
如果采用直接授權(quán)操作,則需要進(jìn)行12次授權(quán)。
如果采用角色就可以簡化
首先將create session,select on scott.emp,insert on scott.emp,update on scott.emp授予角色,然后將該角色授予a,b,c用戶,這樣就可以三次授權(quán)搞定。角色分為預(yù)定義角色和自定義角色兩類。
?
二、預(yù)定義角色
預(yù)定義角色是指Oracle所提供的角色,每種角色都用于執(zhí)行一些特定的管理任務(wù),下面我們介紹常用的預(yù)定義角色connect,resource,dba。
1、connect角色
connect角色具有一般應(yīng)用開發(fā)人員需要的大部分權(quán)限,當(dāng)建立了一個用戶后,多數(shù)情況下,只要給用戶授予connect和resource角色就夠了,那么connect角色具有以下系統(tǒng)權(quán)限:
alter session
create cluster
create database link
create session
create view
create sequence
?
2、resource角色
resource角色具有應(yīng)用開發(fā)人員所需要的其他權(quán)限,比如建立存儲過程、觸發(fā)器等。這里需要注意的是resource角色隱含了unlimited tablespace系統(tǒng)權(quán)限。
resource角色包含以下系統(tǒng)權(quán)限:
create cluster
create indextype
create table
create sequence
create type
create procedure
create trigger
?
3、dba角色
dba角色具有所有的系統(tǒng)權(quán)限,及with admin option選項(xiàng),默認(rèn)的dba用戶為sys和system他們可以將任何系統(tǒng)權(quán)限授予其他用戶。但是要注意的是dba角色不具備sysdba和sysoper的特權(quán)(啟動和關(guān)閉數(shù)據(jù)庫)。
?
三、自定義角色
顧名思義就是自己定義的角色,根據(jù)自己的需要來定義,一般是DBA來建立,如果用的別的用戶來建立,則需要具有create role的系統(tǒng)權(quán)限,在建立角色時可以指定驗(yàn)證方式(不驗(yàn)證,數(shù)據(jù)庫驗(yàn)證等)。
1、建立角色(不驗(yàn)證)
如果角色是公用的角色,可以采用不驗(yàn)證的方式建立角色
sql>create role 角色名 not identified;
?
2、建立角色(數(shù)據(jù)庫驗(yàn)證)
采用這樣的方式時,角色名、口令存放在數(shù)據(jù)庫中,當(dāng)激活該角色時,必須提供口令。在建立這種角色時,需要為其提供口令。
create role 角色名 identified by tiger;
?
3、角色授權(quán)
當(dāng)建立角色時,角色沒有任何權(quán)限,為了使得角色完成特定任務(wù),必須為其授予相應(yīng)的系統(tǒng)權(quán)限和對象權(quán)限。
給角色授權(quán)
給角色授予權(quán)限和給用戶授權(quán)沒有太多的區(qū)別,但是要注意,系統(tǒng)權(quán)限的unlimited tablespace對對象權(quán)限with grant option選項(xiàng)是不能授予角色的。
sql>conn system/manager;
sql>grant create session to 角色名 with admin option;
sql>conn scott/tiger;
sql> grant select on scott.emp to 角色名;
sql>grant insert,update,delete on scott.emp to 角色名;
通過上面的步驟,就給角色授權(quán)了。
?
4、分配角色給某個用戶
一般分配角色是由dba來完成的,如果要以其他用戶身份分配角色,則要求用戶必須具有g(shù)rant any role的系統(tǒng)權(quán)限。
sql>grant 角色名 to blake with admin option;
因?yàn)槲医o了with admin option選項(xiàng),所以,blake可以把system分配給它的角色分配給別的用戶。
?
5、刪除角色
使用drop role,一般是dba來執(zhí)行的,如用其他用戶則要求該用戶具有drop any role系統(tǒng)權(quán)限。
sql>drop role 角色名;
?
6、顯示角色信息
(1)顯示所有角色
sql>select * from dba_roles;
?
(2)顯示角色具有的系統(tǒng)權(quán)限
sql>select privilege,admin_option from role_sys_privs where role='角色名';
?
(3)顯示角色具有的對象權(quán)限
通過查詢數(shù)據(jù)字典視圖dba_tab_privs可以查看角色具有的對象權(quán)限或是列的權(quán)限。
?
(4)顯示用戶具有的角色及默認(rèn)角色
當(dāng)以用戶的身份連接到數(shù)據(jù)庫時,Oracle會自動的激活默認(rèn)的角色,通過查詢數(shù)據(jù)字典視圖dba_role_privs可以顯示某個用戶具有的所有角色及當(dāng)前默認(rèn)的橘色。
sql>select granted_role,default_role from dba_role_privs where grantee='用戶名';
http://www.cnblogs.com/BeautyOfCode/archive/2010/09/28/1837239.html
總結(jié)
- 上一篇: 浏览器外部署Silverlight更新检
- 下一篇: 嘴皮子