2013-06-05 61 views
1

我覺得當前的用戶可以訪問權限授予其他用戶,這是錯誤的刪除數據和。那麼我可以直接刪除那些角色from all_tab_privs是否安全,從all_tab_privs使用</p> <pre><code>select distinct grantor, table_schema from all_tab_privs where granter = ''; </code></pre> <p>如何

而且當我運行

delete from all_tab_privs where grantor = 'username'; 

我得到

SQL Error: ORA-01031: insufficient privileges 
01031. 00000 - "insufficient privileges" 
*Cause: An attempt was made to change the current username or password 
     without the appropriate privilege. 

所以,我需要一些角色添加到當前用戶完成刪除?

+1

['all_tab_privs']](http://docs.oracle.com/cd/B28359_01/server.111/b28320/statviews_2098.htm)是一個內置的Oracle視圖,無法更新。它顯示了授予所有用戶和角色的所有權限,它基於所有賦予(或帶走)權限的'GRANT'和'REVOKE'語句的結果。 –

+1

還有一些東西:錯誤消息顯示「嘗試更改當前用戶名或密碼而沒有適當的權限。」這看起來不正確。而且,所有權限都有一個設保人,所以帶有'where grantor ='''的查詢不應該返回任何內容。如果您不理解這些內容,那麼在撤銷權限時應該非常小心 - 並非all_tab_privs中的所有內容都授予給用戶,並且某些權限在被移除時會造成很大的傷害。 –

+0

@EdGibbs謝謝。從這裏(http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2099.htm)看起來在這個表中它或者授予某個用戶或角色?如果查詢此表,不需要任何條件? – Dreamer

回答

5

你不能(也不應該)從數據字典表中刪除數據。

如果要撤消權限,則需要使用REVOKE命令。喜歡的東西

REVOKE SELECT ON scott.emp FROM bob 
如果要撤銷用戶bob在 scott模式選擇從 emp表數據的能力

+0

我們可以在一個查詢中撤消scott架構中所有表的用戶bob特權嗎? – Dreamer

+3

Dreamer,如果你希望能夠使用一個命令授予(或撤消)'scott'模式中所有表的權限,請使用[ROLES](http://docs.oracle.com/cd/B28359_01 /network.111/b28531/authorization.htm)。至於'bob'的現有補助金,如果他們在桌子上使用'bob'語句授予個人特權,那麼他們必須從個人'bob'語句的撤銷特權表中撤銷。 –

+1

@Dreamer - 您可以使用動態SQL來撤銷所有授予的表格priv,類似於[this](http://stackoverflow.com/q/10551291/266304);但要小心,並確保你確切知道你從誰那裏撤回了什麼。 –

相關問題