最近在處理數據庫的用戶權限問題,之前慣性思維,覺得給用戶授權RESOURCE權限之後,用戶的一般權限都會有,等到發現用戶有RESOURCE角色,卻沒有創建視圖的權限之後,才發現這部分還是一知半解啊,所以此處整理了一下相關的CONNECT角色和RESOURCE角色的內容。
一般情況下,在新建數據庫用戶後,都會習慣性的給用戶授權CONNECT角色和RESOURCE角色:
GRANT connect,resource TO 用戶;
但是擁有這兩個角色的用戶都擁有什麼權限呢?可以使用如下語句查看一下:
SELECT * FROM dba_sys_privs WHERE grantee IN ('RESOURCE', 'CONNECT') ORDER BY 1;
從查詢結果可以看到:
GRANT CREATE VIEW TO 用戶;
那麼,一個用戶,如果查看他擁有什麼權限呢?
方法一:PLSQL Developer工具
在PLSQL Developer中可以很方便的查看用戶的各種類型權限(包括對象權限,角色權限,系統權限),如下圖:
SELECT * FROM dba_tab_privs a WHERE a.grantee = '用戶名';
查詢角色權限:
SELECT * FROM dba_role_privs a WHERE a.GRANTEE = '用戶名';
查詢系統權限:
SELECT * FROM dba_sys_privs a WHERE a.GRANTEE = '用戶名';
RESOURCE 權限就包括了創建表和刪除,dml 該用戶下面的對象的功能的!
UNLIMITED TABLESPACE 是 用戶可以對default tablespace 有無限的使用權限!
這是我賦予 getl 的CONNECT,RESOURCE權限後查看的:
sys@TB> select privilege from dba_sys_privs where grantee=upper('&U');
Enter value for u: getl
old 1: select privilege from dba_sys_privs where grantee=upper('&U')
new 1: select privilege from dba_sys_privs where grantee=upper('getl')
PRIVILEGE
----------------------------------------
UNLIMITED TABLESPACE
CREATE ANY VIEW
CREATE ANY TABLE
DEBUG ANY PROCEDURE
SELECT ANY TABLE
DEBUG CONNECT SESSION
CREATE SESSION
7 rows selected.
看名稱就知道不一樣