系統管理權限和角色
*介紹
當剛剛建立使用者時,使用者沒有任何許可權,也不能執行任何操作、如果要執行某種特定的資料庫操作,則必須為其授予系統的許可權;如果使用者要訪問其它方案的對象,則必須為其授予對象的許可權,為了簡化許可權的管理,可以使用角色。
一、許可權1、系統許可權
什麼是系統許可權?系統許可權有哪些,如何賦給系統許可權?
使用者針對資料庫的許可權 ,系統層級的許可權,比如能不能建庫,能不能建表,能不能登入資料庫,能不能建立使用者等。。
系統許可權是指執行特定類型sql命令的權利,它用於控制使用者可以執行的一個或是一組資料庫操作,比如當使用者具有create table許可權時,可以在其方案中建表,當使用者具有create any table許可權時,可以在任何方案中建表。oracle提供了上百多種系統許可權。
常用的有:
create session 串連資料庫 create table 建表
create view 建視圖 create public synonyn 建同義字
create procedure 建過程、函數、包 create trigger 建觸發器
create cluster 建族
.系統許可權有哪些,可以通過這個命令來查詢
select * from system_privilege_map order by name;
*需要注意的是:系統許可權不是級聯回收。
2、對象許可權
對象許可權:是一個方案去訪問別的方案的資料對象的權力
方案:當一個使用者(假如是Tom)建立時,那麼oracle會自動地給Tom使用者對應了一個叫Tom的方案,方案的名字和使用者的名字完全一樣的,裡面有各種各樣的資料對象:表,視圖,觸發器,預存程序等等。Tom使用者登入後,方案裡面的東西都歸Tom所有。當Tom使用者想要去訪問scott方案的表時,那麼就要被scott賦予相應的對象許可權。
常用的對象許可權有:
alter 修改(表修改) delete 刪除
select 查詢 insert 添加
update 修改(資料修改) index 索引
references 引用 execute 執行
.查看使用者或者角色的所有對象許可權、
select distinct privilege from dba_tab_privs;
*授予對象許可權
授予對象許可權是由對象許可權的所有者或者是sys、system使用者來完成的,命令為 grant。如果帶有 with grant option選項,那麼則可以繼續將該許可權授予給其它使用者。
.比如建立了 pangzi 使用者,要可以查詢scott.emp的表,那麼就必須授予pangzi相應的對象許可權
grant select on emp to pangzi;
.希望pangzi可以修改scott.emp的表,並且可以將該許可權授予給其它使用者。
grant update on emp to pangzi with grant option;
.希望pangzi可以擁有 查詢,修改,刪除的許可權。
grant all on emp to pangzi;
*授予列許可權,可以控製得更加精細
.希望pangzi可以修改scott.emp 的表的ename, sal資料。
grant update on emp(ename,sal) to pangzi;
*回收許可權
收回對象許可權可以由對象的所有者來完成,也可以由sys, system使用者來完成. 命令 revoke。
.收回pangzi可以查詢scott.emp的許可權
revoke select on emp from pangzi;
需要注意的是:對象許可權的回收是級聯回收的。也就是說,scott使用者授予了pangzi 一個select許可權並擁有了 with grant option 許可權,當pangzi又授予了另外一個使用者shouzi這個select許可權時,要是scott對pangzi收回了select許可權,那麼,shouzi的select許可權也將沒有了。
二、角色:簡化許可權的管理
假如希望Tom使用者可以登入、建立表、訪問scott方案的表,如果要給Tom這三個許可權,就要賦值三次,那就太麻煩了。一個使用者建立之後就要給它許多預設的許可權,要是一個一個給它的話,比較麻煩。於是oracle給了這樣一種方式系統管理權限:
將 create session,select,insert,update授予給角色,然後將該角色授予給使用者,那麼該使用者就擁有那些許可權了。
角色分為預定義角色和自訂角色:
1.預定義角色
*connect 角色
connect 角色具有一般應用開發人員需要的大部分許可權,當建立了一個使用者後,多數情況下,只要給使用者授予connect和resource 角色就夠了。connect角色具有的系統許可權:
alter session
串連資料庫
create cluster
create database link
create table
create view
create sequence
*resource角色具有的系統許可權
create cluster
create indextype
create table
create sequence
create type
create procedure
create trigger
*dba角色
dba角色具有所有的系統許可權,及with admin option選項,預設的dba使用者為sys和system,他們可以將任何系統許可權授予其它使用者。但是,dba角色不具備sysdba和sysoper的特權(啟動和關閉資料庫)。
*顯示角色資訊
.顯示所有角色
select * from dba_roles;
.顯示角色具有的角色。
這個可以通過資料字典視圖dba_role_privs來顯示某個使用者具有的所有角色及當前預設角色。
select granted_role,default_role from dba_role_privs where grantee = '使用者名稱';
當然了,這個用pl/sql developer工具查看更加直觀。