您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么理解oracle中default role”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解oracle中default role”吧!
ORACLE創建角色的時候是可以帶密碼驗證的。當為一個用戶授予角色時,如果是授予的DEFAULT的時候,那么這個用戶登錄的時候自動就具備了這個角色,不需要進行這個角色的密碼驗證的。如果不是DEFAULT的,那么可以使用SET ROLE ROLE_NAME IDENTIFIED ROLE_PASSWORD來進行密碼驗證后,用戶才能具有相應的角色。
oracle權限體系中有個default role,比較難以理解。下面用實例說明一下作用。
我們可以給某個用戶分配一些角色,比如role r1,r2,r3,r4,而其中可以將某些角色比如r1設置為default role,其他的不設置成default role,這樣,當該用戶登錄時,自動具有default role中所包含的權限,其他的角色所具有的權限要通過set role 角色來獲得。
下面我們舉個例子:
(1)sys用戶作為sysdba登錄,創建4個角色:
create role r1;
create role r2 identified by r2;
create role r3 identified by r3;
create role r4 identified by r4;
(2)sys用戶賦予這四個角色對應的權限:
grant create session to r1;
grant select on hr.test to r2; (這里hr.test是我新創建的一個表,里面有ID和name兩列)
grant update(name) on hr.test to r3;
grant insert on hr.test to r3;
grant delete on hr.test to r4;
(3)sys用戶創建一個用戶u3
create user u3 identified by u3;
(4)將角色r1,r2,r3,r4賦予用戶u3
grant r1,r2,r3,r4 to u3;
在修改用戶u3的默認角色前,r1,r2,r3,r4 角色均為u3的 default role,以u3用戶登錄,查詢、增刪改hr.test,都沒有問題。
(5)現在sys用戶修改用戶u3的default role,僅將r1作為u3的默認角色:
alter user u3 default role r1; --此時將覆蓋原來的設置,u3 的default role =r1,僅僅有登錄權限。
(6)用戶u3 log off ,然后再log on,進去后發現,
查詢、增刪改hr.test都不能進行。
(7) 用戶自己打開role權限
set role r2 identified by r2;
這時執行 select * from hr.test,發現沒有問題。增刪改不行。
將對應的角色打開:
set role r3 identified by r3;
此時修改和插入記錄沒有問題,但是select * from hr.test 確發現不行了。證明此時用戶所屬的角色僅僅是默認角色r1,和剛剛打開的角色r3,而r2被set role r3 identified by r3;覆蓋掉了。
那要同時有r2,r3,r4的權限怎么辦呢?
set role r2 identified by r2,r3 identified by r3,r4 identified by r4。此時就同時對hr.test可以進行查詢,增刪改了。
不過set role 的效果是臨時的,只是當前session有效,其他的session無效,當結束當前session后再登錄,又只有default role 的權限了。
到此,相信大家對“怎么理解oracle中default role”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。