2016-11-15 68 views
-1

我正在解決IBM DB2中「特性」的解決方法。在DB2中更改模式的查看/訪問權限

這個奇特的數據庫有一個「功能」,如果我嘗試使用CREATE TABLE語句並且沒有找到模式,它會爲我創建這個模式,即使我不想要它。此錯誤已經導致我在調試中花了很多時間,因爲我現在的代碼存在於期望不會創建架構,如果它不存在

我的問題是 - 如何更改特定用戶無權查看特定模式的權限(甚至在創建模式階段期間)?

我檢查了這doc ..

這似乎與GRANT,有以下三種權限:

ALTERIN 授予的特權來改變或在 架構中的所有對象的意見。明確創建的模式的所有者將自動收到ALTERIN特權 。

CREATEIN 授予在架構中創建 對象的權限。 創建對象(如CREATETAB)所需的其他權限或特權仍然是必需的。明確創建的模式的所有者 會自動接收CREATEIN 權限。隱式創建的模式具有自動授予PUBLIC的CREATEIN特權 。

DROPIN 授予刪除模式中所有對象 的權限。顯式創建的模式 的所有者自動接收DROPIN特權

由於只有ALTERIN,CREATEIN,DROPIN和,我沒有看到任何有關查看訪問權限:/

編輯:

我檢查了我們的Dash DB數據庫爲這個特定的表,它具有這些特殊的用戶使用以下SQL的特殊權限:

SELECT * FROM SYSIBMADM.PRIVILEGES WHERE OBJECTSCHEMA = 'FAKE_SCRATCH';

這是結果:

enter image description here

編輯2:

我嘗試以下效仿短跑數據庫的權限,該用戶對於該模式:

GRANT ALTERIN, CREATEIN, DROPIN ON SCHEMA FAKE_SCRATCH TO USER TEST_USER;

enter image description here

Still does不工作:在DB2執行/

+0

這是正確設置權限的數據庫的所有問題 - [IMPLICIT_SCHEMA(HTTP:// WWW .ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.admin.sec.doc/doc/c0005525.html) - 但是你會抱怨它太嚴格了。 – mustaccio

+0

@mustaccio感謝您的鏈接!所以我想這些'RESTRICTIVE'權限只能在模式創建階段完成? – theGreenCabbage

+0

不,您只能在創建數據庫時指定'RESTRICTIVE'。在現有的數據庫中,您應該從'PUBLIC'撤消'IMPLICIT_SCHEMA'(並且不要讓您的應用程序以具有DBADM特權的用戶身份進行連接)。 – mustaccio

回答

0

下面的SQL查詢解決了這一問題:

REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC