把視圖查詢權限授予普通用戶

   對於一些oracle的普通用戶需要查詢某個視圖,但是因爲安全考慮不能把dba權限賦予普通用戶,那隻能把相關視圖的查詢權限賦予給普通用戶,下面就來說一下怎麼給普通用戶授予視圖的查詢權限。

1.給用戶授予某個視圖的查詢權限

SQL> grant select on v$mystat to test1;  

grant select on v$mystat to test1  

                *  

ERROR at line 1:  

ORA-02030: can only select from fixed tables/views  

這個錯誤可能很多人都遇到過,爲什麼會報這個錯誤呢?因爲v$這類我們經常查的視圖都是v_$開頭視圖的同義詞。


select synonym_name,table_name from dba_synonyms where synonym_name='V$MYSTAT';  

  

SYNONYM_NAME                   TABLE_NAME  

------------------------------ ------------------------------  

V$MYSTAT                       V_$MYSTAT  


所以我們需要直接授予用戶v_$的查詢權限

SQL> grant select on v_$mystat to test1;  

  

Grant succeeded. 


##這樣 test1用戶就擁有了 查詢v$mystat視圖的權限了

收回權限

revoke select on v_$mystat from test1;


2.給用戶授予select any dictionary權限

SQL> grant select any dictionary to test1;  

  

Grant succeeded. 

##給用戶授予select any dictionary 權限,那麼用戶就能訪問所有的視圖,不要輕易給普通用戶授予該權限。


3.給public 授予某個視圖的查詢權限

SQL> grant select on v_$database to test1;  

  

Grant succeeded.

##這樣數據庫裏所有的用戶都具有查詢v$database視圖的權限了


4.給用戶授予select any table 權限

##如果把該權限賦予給某用戶,並且數據庫O7_DICTIONARY_ACCESSIBILITY參數值爲true,那麼用戶可以查詢數據庫裏的所有表,視圖等,不要賦予普通用戶()


5.查看用戶權限

select * from dba_sys_privs where grantee='TEST1';

select * from dba_tab_privs where grantee='TEST1';

select * from dba_role_privs where grantee='TEST1';


參考文章:http://blog.csdn.net/shaochenshuo/article/details/46362813 






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章