我正在解決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';
這是結果:
編輯2:
我嘗試以下效仿短跑數據庫的權限,該用戶對於該模式:
GRANT ALTERIN, CREATEIN, DROPIN ON SCHEMA FAKE_SCRATCH TO USER TEST_USER;
Still does不工作:在DB2執行/
這是正確設置權限的數據庫的所有問題 - [IMPLICIT_SCHEMA(HTTP:// WWW .ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.admin.sec.doc/doc/c0005525.html) - 但是你會抱怨它太嚴格了。 – mustaccio
@mustaccio感謝您的鏈接!所以我想這些'RESTRICTIVE'權限只能在模式創建階段完成? – theGreenCabbage
不,您只能在創建數據庫時指定'RESTRICTIVE'。在現有的數據庫中,您應該從'PUBLIC'撤消'IMPLICIT_SCHEMA'(並且不要讓您的應用程序以具有DBADM特權的用戶身份進行連接)。 – mustaccio