最近在處理數據庫的用戶權限問題,以前慣性思惟,以爲給用戶受權RESOURCE權限以後,用戶的通常權限都會有,等到發現用戶有RESOURCE角色,卻沒有建立視圖的權限以後,才發現這部分仍是隻知其一;不知其二啊,因此此處整理了一下相關的CONNECT角色和RESOURCE角色的內容。數據庫
通常狀況下,在新建數據庫用戶後,都會習慣性的給用戶受權CONNECT角色和RESOURCE角色:工具
GRANT connect,resource TO 用戶;
可是擁有這兩個角色的用戶都擁有什麼權限呢?可使用以下語句查看一下:spa
SELECT * FROM dba_sys_privs WHERE grantee IN ('RESOURCE', 'CONNECT') ORDER BY 1;
從查詢結果能夠看到:code
CONNECT角色:僅具備建立SESSION的權限對象
RESOURCE角色:僅具備建立CLUSTER,INDEXTYPE,OPERATOR,PROCEDEURE,SEQUENCE,TABLE,TRIGGER,TYPE的權限。同時,當把ORACLE resource角色授予一個user的時候,不但會授予ORACLE resource角色自己的權限,並且還有unlimited tablespace權限,可是,當把resource授予一個role時,就不會授予unlimited tablespace權限。blog
確實沒有建立視圖的權限,由此看來若是須要建立視圖權限,只能單獨受權:get
GRANT CREATE VIEW TO 用戶;
那麼,一個用戶,若是查看他擁有什麼權限呢?it
方法一:PLSQL Developer工具table
在PLSQL Developer中能夠很方便的查看用戶的各類類型權限(包括對象權限,角色權限,系統權限),以下圖:class
方法二:SQL查詢語句
查詢對象權限:
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 = '用戶名';