Oracle角色詳解

一、概述

角色就是相關權限的命令集合,使用角色的主要目的就是爲了簡化權限的管理。假定有用戶a,b,c爲了讓他們都擁有權限

1、連接數據庫

2、在scott.emp表上select,insert,update

如果採用直接授權操作,則需要進行12次授權。

如果採用角色就可以簡化

首先將create session,select on scott.emp,insert on scott.emp,update on scott.emp授予角色,然後將該角色授予a,b,c用戶,這樣就可以三次授權搞定。角色分爲預定義角色和自定義角色兩類。

 

二、預定義角色

預定義角色是指Oracle所提供的角色,每種角色都用於執行一些特定的管理任務,下面我們介紹常用的預定義角色connect,resource,dba。

1、connect角色

connect角色具有一般應用開發人員需要的大部分權限,當建立了一個用戶後,多數情況下,只要給用戶授予connect和resource角色就夠了,那麼connect角色具有以下系統權限:

alter session

create cluster

create database link

create session

create view

create sequence

 

2、resource角色

resource角色具有應用開發人員所需要的其他權限,比如建立存儲過程、觸發器等。這裏需要注意的是resource角色隱含了unlimited tablespace系統權限。

resource角色包含以下系統權限:

create cluster

create indextype

create table

create sequence

create type

create procedure

create trigger

 

3、dba角色

dba角色具有所有的系統權限,及with admin option選項,默認的dba用戶爲sys和system他們可以將任何系統權限授予其他用戶。但是要注意的是dba角色不具備sysdba和sysoper的特權(啓動和關閉數據庫)。

 

三、自定義角色

顧名思義就是自己定義的角色,根據自己的需要來定義,一般是DBA來建立,如果用的別的用戶來建立,則需要具有create role的系統權限,在建立角色時可以指定驗證方式(不驗證,數據庫驗證等)。

1、建立角色(不驗證)

如果角色是公用的角色,可以採用不驗證的方式建立角色

sql>create role 角色名 not identified;

 

2、建立角色(數據庫驗證)

採用這樣的方式時,角色名、口令存放在數據庫中,當激活該角色時,必須提供口令。在建立這種角色時,需要爲其提供口令。

create role 角色名 identified by tiger;

 

3、角色授權

當建立角色時,角色沒有任何權限,爲了使得角色完成特定任務,必須爲其授予相應的系統權限和對象權限。

給角色授權

給角色授予權限和給用戶授權沒有太多的區別,但是要注意,系統權限的unlimited tablespace對對象權限with grant option選項是不能授予角色的。

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 角色名;

通過上面的步驟,就給角色授權了。

 

4、分配角色給某個用戶

一般分配角色是由dba來完成的,如果要以其他用戶身份分配角色,則要求用戶必須具有grant any role的系統權限。

sql>grant 角色名 to blake with admin option;

因爲我給了with admin option選項,所以,blake可以把system分配給它的角色分配給別的用戶。

 

5、刪除角色

使用drop role,一般是dba來執行的,如用其他用戶則要求該用戶具有drop any role系統權限。

sql>drop role 角色名;

 

6、顯示角色信息

(1)顯示所有角色

sql>select * from dba_roles;

 

(2)顯示角色具有的系統權限

sql>select privilege,admin_option from role_sys_privs where role='角色名';

 

(3)顯示角色具有的對象權限

通過查詢數據字典視圖dba_tab_privs可以查看角色具有的對象權限或是列的權限。

 

(4)顯示用戶具有的角色及默認角色

當以用戶的身份連接到數據庫時,Oracle會自動的激活默認的角色,通過查詢數據字典視圖dba_role_privs可以顯示某個用戶具有的所有角色及當前默認的橘色。

sql>select granted_role,default_role from dba_role_privs where grantee='用戶名';


轉自:http://www.cnblogs.com/BeautyOfCode/archive/2010/09/28/1837239.html

發佈了13 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章