oracle set 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,都沒有問題。[註釋:**10g 中是這樣的,11g中有此處有出入*]
(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 的許可權了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-757847/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(30):ROLEOracle
- 聊聊Oracle Default RoleOracle
- oracle: default role 詳解(轉)Oracle
- Oracle 角色 自定義角色 RoleOracle
- Oracle OCP(31):USER & ROLE & PRIVILEGE 其它Oracle
- 有關Oracle role的總結Oracle
- Test Negtive Role Set in a stream environmnet- 10g_new_feature
- Oracle角色許可權之Default RoleOracle
- oracle set eventsOracle
- oracle實驗記錄 (許可權,role)Oracle
- Oracle裡的setOracle
- Oracle 19C DELETE_CATALOG_ROLE角色Oracledelete
- Oracle基礎 08 使用者角色 user/roleOracle
- Oracle set unused的用法Oracle
- Oracle SET 命令總結Oracle
- oracle set 使用命令Oracle
- 為oracle listener set passwordOracle
- Oracle 11.2.0.2.0 patch setOracle
- PostgreSQL Role ManagementSQL
- Ctrete new role
- Oracle跟蹤事件 -- set eventsOracle事件
- Oracle 跟蹤事件 set eventOracle事件
- Oracle set unused的用法.sqlOracleSQL
- Laravel workflow with database and roleLaravelDatabase
- 認識SQL Server2000 Server Role 和 Database RoleSQLServerDatabase
- Oracle資料庫使用者許可權控制 - Role - SynonymOracle資料庫
- alter session set events /Oracle跟蹤SessionOracle
- [zt]Oracle跟蹤事件 - set eventsOracle事件
- Oracle跟蹤事件:set events 整理Oracle事件
- 【優化】ORACLE set autotrace in SQL*Plus優化OracleSQL
- oracle set的一些整理Oracle
- Multi Role的實現
- Create a secure application roleAPP
- ansible-role角色
- Oracle 12c Rac Set Archive ModeOracleHive
- List of Oracle Database Patch Set Updates (PSU)OracleDatabase
- 【轉】修改Oracle字符集(character set)Oracle
- No need to set a listener password in ORACLE 10GOracle 10g