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 的許可權了。
本文來自CSDN部落格,轉載請標明出處:
http://blog.csdn.net/strikers1982/archive/2010/01/27/5262157.aspx
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-2158793/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(30):ROLEOracle
- Oracle default usersOracle
- Oracle OCP(31):USER & ROLE & PRIVILEGE 其它Oracle
- Oracle autotrace 報 SP2-0618 PLUSTRACE role 問題解決Oracle
- 9 Role Transitions 角色轉換
- Oracle 19C DELETE_CATALOG_ROLE角色Oracledelete
- Oracle SCN詳解Oracle
- oracle rowid詳解Oracle
- ORACLE -詳解SCNOracle
- ORACLE的HINT詳解Oracle
- Oracle練習詳解Oracle
- oracle oradebug使用詳解Oracle
- ORACLE基礎之oracle鎖(oracle lock mode)詳解Oracle
- SVN命令詳解【轉】
- vi命令詳解(轉)
- [轉]GitFlow詳解教程Git
- Oracle中job的使用詳解Oracle
- 一、oracle 高水位線詳解Oracle
- Oracle GoldenGate常用引數詳解OracleGo
- oracle rac 核心引數詳解Oracle
- Oracle中pivot函式詳解Oracle函式
- 【RECYCLEBIN】Oracle回收站詳解Oracle
- oracle 密碼詳解以及破解Oracle密碼
- oracle連線查詢詳解Oracle
- JavaScript中的export、export default、exports和module.exports(export、export default、exports使用詳細)JavaScriptExport
- 玩轉 JavaScript 之詳解 thisJavaScript
- MySQL鎖詳解!(轉載)MySql
- [轉]Android 通知Notification 詳解Android
- mysql行列轉換詳解MySql
- Oracle的表空間quota詳解Oracle
- Oracle SCN機制詳細解讀Oracle
- 詳解oracle資料庫閃回Oracle資料庫
- 【INDEX】Oracle分割槽索引技術詳解IndexOracle索引
- 【DATAGUARD】Oracle Dataguard體系架構詳解Oracle架構
- ORACLE中Cursor_sharing引數詳解Oracle
- 【轉】linux-命令top詳解Linux
- 轉:DNS解析過程詳解DNS
- RMAN備份詳解(轉載)