oracle受權與回收許可權grant和revoke

aishu521發表於2013-03-13

資料來源網路

資料來源網路
1.GRANT 賦於許可權
常用的系統許可權集合有以下三個:
CONNECT(基本的連線),   RESOURCE(程式開發),   DBA(資料庫管理)
常用的資料物件許可權有以下五個:
ALL   ON   資料物件名,   SELECT   ON   資料物件名,   UPDATE   ON   資料物件名,
DELETE   ON   資料物件名,     INSERT   ON   資料物件名,       ALTER     ON   資料物件名
GRANT   CONNECT,   RESOURCE   TO   使用者名稱;
GRANT   SELECT   ON   表名   TO   使用者名稱;
GRANT   SELECT,   INSERT,   DELETE   ON表名   TO   使用者名稱1,   使用者名稱2;
2.REVOKE   回收許可權
REVOKE   CONNECT,   RESOURCE   FROM   使用者名稱;
REVOKE   SELECT   ON   表名   FROM   使用者名稱;
REVOKE   SELECT,   INSERT,   DELETE   ON表名   FROM   使用者名稱1,   使用者名稱2;
一、概述
這一部分我們主要看看Oracle如何管理許可權和角色,許可權和角色的區別在哪裡。
當剛剛建立使用者時,使用者沒有任何許可權,也不能執行任何操作。如果要執行某種特定的資料庫操作,則必須為其授予系統的許可權。如果使用者要訪問其他方案的物件,則必須為其授予物件的許可權,為了簡化許可權的管理,可以使用角色。這裡我們會詳細介紹。
二、許可權
許可權是指執行特定型別的Sql命令或是訪問其他方案物件的權利,包括系統許可權和物件許可權。
1、系統許可權
A、系統許可權的介紹
系統許可權是指執行特定型別Sql命令的權利,它用於控制使用者可以執行的一個或是一組資料庫操作。比如當使用者具有create table許可權是,可以在其方案中建表,當使用者具有create any table許可權時,可以在任何方案中建表。Oracle提供了100多種系統許可權。
常用的有
create session連線資料庫
create view建立檢視
create procedure建立過程、函式、包
create cluster建簇
create table建立表
create public synonym建立同義詞
create trigger 建立觸發器
B、顯示系統許可權
Oracle提供了100多種系統許可權,而且Oracle的版本越高,提供的系統許可權就越多,我們可以查詢資料字典檢視system_privilege_map,可以顯示所有系統許可權。
sql>select * from system_privilege_map order by name;
三、授予系統許可權
一般情況,授予系統許可權是有dba完成的,如果用其他使用者來授予系統許可權,則要求該使用者必須具有grant any privilege的系統許可權在授予系統許可權時,可以帶有with admin option選項,這樣,被授予許可權的使用者或是角色還可以將該系統許可權授予其他的使用者或是角色。
案例:
1、建立兩個使用者ken,tom,初始階段他們沒有任何許可權,如果登入就會給出錯誤資訊。
sql>create user ken identified by m123;
sql>create user tom identified by m123;
2、給使用者ken授權
sql>grant create session,create table to ken with admin option;
sql>grant create view to ken;
3、給使用者tom授權
我們可以通過ken給tom授權,因為with admin option是加上的。當然也可以通過DBA給tom授權,我們就用ken給tom授權。
sql>grant create session,create table to tom with admin option;
sql>grant create view to tom;——這個是不可以的,因為Ken沒有該許可權的下放許可權。
四、回收系統許可權
一般情況下,回收系統許可權是dba來完成的,如果其他的使用者來回收系統許可權,要求該使用者必須具有相應系統許可權及轉授系統許可權的選項(with admin option)。回收系統許可權使用revoke來完成。
當回收了系統許可權後,使用者就不能執行相應的操作了,但是請注意,系統許可權不是級聯回收的。
執行以下語句:
sql>revoke create session from ken;
說明:DBA執行了該語句後回收了Ken的登入許可權後,Ken自然就不能再登入了,有Ken下放的該許可權所有者tom還是可以正常登入的。
五、物件許可權
指訪問其他方案物件的權利,使用者可以直接訪問自己方案的物件。但是如果要訪問別的方案的物件,則必須具有物件的許可權。比如Smith使用者要訪問scott.emp表(scott:方案,emp:表),則必須在scott.emp表上具有物件的許可權。
常用的有:
alter修改表結構
delete 刪除資料
select查詢資料
insert新增資料
update修改資料
index在表上建立索引
references引用
execute執行
1、顯示物件許可權
通過資料字典檢視可以顯示使用者或是角色所具有的物件許可權。檢視為dba_tab_privs
sql>select distinct privilege from dba_tab_privs;
sql>select grantor,owner,table_name,privilege from dba_tab_privs where grantee='Black';
2、傳授物件許可權
物件許可權可以授予使用者、角色和public。在授予物件許可權是,如果帶有with grant option選項,則可以將該許可權轉授給其他使用者,但是要注意with grant option選項不能被授予角色。
1、monkey使用者要操作scott.emp表,則必須授予相應的物件許可權
希望monkey可以查詢scott.emp表的資料,怎麼操作
sql>grant select on emp to monkey;
希望monkey可以修改scott.emp表的資料,怎麼操作
sql>grant update on emp to monkey;
希望monkey可以刪除scott,emp表的資料,怎麼操作
sql>grant delete on emp to monkey;
有沒有更加簡單的方法,一次吧所有的許可權賦給monkey
sql>grant all on emp to monkey;
2、能否對monkey訪問許可權更加精細控制。(授予列許可權)
希望monkey只可以修改scott.emp的表的sal欄位,怎樣操作
sql>grant update on emp(sal) to monkey;
希望monkey只可查詢scott.emp的表的ename,sal資料,怎樣操作
sql>grant select on emp(ename,sal) to monkey;
3、授予alter許可權
如果monkey使用者要修改scott.emp表的結構,則必須授予alter物件許可權
sql>grant alter on emp to monkey;
當然也可以用sys,system來完成這件事。
4、授予execute許可權
如果使用者想要執行其他方案的包/過程/函式,則需要有execute許可權。
比如為了讓Ken可以執行包abms_transaction,可以授予execute許可權。
sql>grant execute on dbms_transaction to ken;
5、授予index許可權
如果想要在別的方案的表上建立索引,則必須要具有index物件許可權
如為了讓Ken可以在scott.emp表上建立索引,就給其index的物件許可權
sql>grant index on scott.emp to ken;
6、使用with grant option選項
該選項用於傳授物件許可權,但是該選項只能被授予使用者,而不能授予角色。
sql>grant select on emp to ken with grant option;
7、回收物件許可權
在Oracle中,收回物件的許可權可以由物件的所有者來完成。
這裡要說明的是:收回物件許可權後,使用者就不能執行相應的sql命令,但是要注意的是物件的許可權是會被級聯回收的。
sql>revoke select on emp from ken;
說明:Scott執行了該語句後,就回收了Ken使用者在emp表上查詢許可權,因此此時ken已經不能對scott.emp進行查詢操作了。於此同時也收回了ken轉授下去的該許可權,有ken授予的對scott.emp表查詢的許可權的獲得者也不能對scott.emp進行查詢操作了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15187685/viewspace-755939/,如需轉載,請註明出處,否則將追究法律責任。

相關文章