資料庫版本:11GR2 一、介紹 在oracle中沒有其他資料庫系統中的資料庫的概念,對象都是創建在用戶下。當前用戶具有當前用戶下所有對象的所有許可權無論該對象是否是當前用戶所創建。舉個簡單例子創建一個用戶授予該用戶連接許可權,然後用管理員用戶在該用戶下創建一張表,該用戶可以刪除管理員在該用戶下創建的表 ...
資料庫版本:11GR2
一、介紹
在oracle中沒有其他資料庫系統中的資料庫的概念,對象都是創建在用戶下。當前用戶具有當前用戶下所有對象的所有許可權無論該對象是否是當前用戶所創建。舉個簡單例子創建一個用戶授予該用戶連接許可權,然後用管理員用戶在該用戶下創建一張表,該用戶可以刪除管理員在該用戶下創建的表。
二、許可權
許可權主要可以分成三類:系統許可權、角色、對象許可權。角色是一類許可權的分組。
1.系統許可權
系統許可權其實就是用戶在當前用戶架構下所具有的許可權。在11g中系統許可權有200個,比如create table,UNLIMITED TABLESPACE等。
查詢當前用戶擁有的系統許可權:
SELECT * FROM user_sys_privs;
2.角色
角色其實就是一類許可權的分組,所以給用戶分配角色其實也是在給用戶分配許可權。在oracle中有三個比較常用的角色。對於一般不是很嚴格的系統可以授予開發用戶CONNECT、RESOURCE角色許可權即可。
DBA:該角色具有資料庫所有的許可權。
CONNECT:該角色具有連接資料庫的許可權,和create session的許可權一樣。
RESOURCE:該角色是應用程式開發角色,具有如下許可權
查詢當前用戶擁有的角色:
SELECT * FROM USER_ROLE_PRIVS;
3.對象許可權
對象許可權指的是其它擁有用戶的對象的許可權。其它用戶對象的許可權包括:SELECT,DELETE,UPDATE,ALTER,INSERT,INDEX,REFERENCES,FLASHBACK,DEBUG,QUERY REWRITE,ON COMMIT REFRESH;註意其它用戶對象的許可權沒有drop的許可權。
查詢當前用戶擁有的對象許可權:
SELECT * FROM USER_TAB_PRIVS;
當前用戶chenmh擁有用戶zhang下student表的所有許可權。
三、grant授權
1.授予用戶connect、resource角色許可權。一般創建應用程式開發用戶可以授予這兩個角色的許可權。
GRANT CONNECT,RESOURCE TO zhang;
2.授予用戶chenmh用戶zhang下person表的SELECT,DELETE,UPDATE,INSERT許可權,授予具體的對象許可權是對於許可權嚴格控制的一種方案。
GRANT SELECT,DELETE,UPDATE,INSERT ON zhang.person TO CHENMH ;
3.授予用戶chenmh用戶zhang下person表的所有許可權
GRANT ALL PRIVILEGES ON zhang.person to chenmh;
grant許可權圖表:
四、REVOKE回收許可權
1.回收角色許可權
REVOKE CONNECT,RESOURCE FROM chenmh;
2.回收系統許可權
REVOKE CREATE FROM chenmh;
3.回收用戶對象許可權,回收zhang用戶下person表的所有許可權,如果是單個授予的許可權需要單個的收回
REVOKE ALL PRIVILEGES ON zhang.person FROM chenmh;
revoke圖表:
五、批量操作
1.批量授予許可權,授予用戶chenmh擁有zhang下所有表的增刪改查許可權。生產批量執行sql
SELECT 'GRANT SELECT,DELETE,UPDATE,INSERT ON '||OWNER||'.'||TABLE_NAME||' TO CHENMH;' FROM dba_tables WHERE OWNER='ZHANG';
如果要查詢其它對象可以查詢dba_objects表。
2.批量收回系統許可權,收回用戶chenmh的所有系統許可權
SELECT 'REVOKE '||PRIVILEGE||' FROM CHENMH;' FROM DBA_SYS_PRIVS WHERE GRANTEE='CHENMH';
將拼接的sql複製出來執行查詢。
3.批量收回角色許可權
SELECT 'REVOKE '||GRANTED_ROLE||' FROM CHENMH;' FROM DBA_ROLE_PRIVS WHERE GRANTEE='CHENMH';
4.批量收回用戶對象許可權,收回用戶chenmh在架構zhang下的所有許可權
SELECT 'REVOKE '||PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME||' FROM CHENMH;' FROM DBA_Tab_Privs WHERE GRANTEE='CHENMH' AND OWNER='ZHANG' ORDER BY TABLE_NAME,PRIVILEGE;
備註: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。 《歡迎交流討論》 |