把檢視查詢許可權授予普通使用者
阿新 • • 發佈:2019-01-01
可以一些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';
##注意從public 收回相關表的查詢許可權,以及收回select any table許可權後要檢查資料庫中是否有procedure,package,function失效,如果有需要重新編譯
$ORACLE_HOME/rdbms/admin/utlrp.sql