Windows

如何在 Windows 上使用 DB2 9.7 向本地 db2admin 授予所有權限?

  • May 30, 2012

我有一台裝有 OS Windows XP Professional Edition Service Pack 3 的筆記型電腦作為我的開發人員站。

我已經下載並安裝了 Express-C 版本的 IBM DB2 UDB 9.7 修訂包 4。

我有一個名為 db2admin 的本地 Windows 帳戶,我將其用作本地數據庫管理員,用於本地安裝 DB2(僅用於開發人員)。

執行命令行視窗時,我可以毫無問題地執行以下命令:

db2 attach to db2 user db2admin using xxxxxxxxxx

這允許我附加到我的名為 DB2 的實例。

我可以執行我的創建數據庫命令。

然後我嘗試連接到數據庫以授予我在 DB2 中的 db2admin 帳戶的所有權限。

db2 CONNECT TO MYDB;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

但是,當我執行它時,DB2 告訴我我的實際 Windows 使用者帳戶 (synprgcma) 無權授予使用者 db2admin 權限。

因此,如果我將第二個腳本更改為以下內容:

db2 CONNECT TO MYDB USER db2admin USING xxxxxxxx;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

然後 DB2 告訴我 db2admin 不能撤銷或授予自己權限(實際上它告訴我一個 id 不能撤銷或授予自己權限)。

所以我很難過。我之前安裝的 DB2(9.5,我不記得我使用的是哪個修訂包)沒有這個問題。

如何向本地管理員帳戶授予必要的權限?我相信我需要這個才能執行我接下來需要執行的綁​​定命令:

db2 CONNECT TO MYDB;
db2 bind @db2cli.lst blocking all grant public sqlerror continue CLIPKG 20;
db2 CONNECT RESET;

任何幫助,將不勝感激。

**編輯:**我發現了一些與此相關的以下連結。仍然不確定如何讓它工作,但至少我找到了一些文件。

根據我對問題的編輯中的最後一個連結,我找到了答案。我無法調整系統帳戶,因為我們的系統登錄來自 LDAP,我無法控制組和其他什麼。

所以我做了以下事情:

  1. 打開 DB2 GUI(這樣做最容易)。
  2. 以 db2admin 身份連接到所需的數據庫。
  3. 將我作為使用者登錄到數據庫。
  4. 授予該 ID(我的 ID)的所有權限。
  5. 斷開。
  6. 以我的身份連接到所需的數據庫。
  7. 將所有權限授予 db2admin。
  8. 斷開。

瞧!db2admin 現在以所有權限登錄。

**編輯:**我將離開上面的內容,因為它幫助我學習瞭如何在 DB2 中做一些有趣的事情。但是,我了解到具有 DATAACCESS 和 ACCESSCTRL 權限的 DBADM/SECADM 授予實例所有者(在我的情況下為 db2admin id)具有與數據庫互動所需的所有權限。實際上,我本可以在腳本中註釋掉上面的那些授權行。這些是針對舊版本 DB2 執行的腳本遺留下來的。我還發現,如果在從數據庫 B 還原到數據庫 A 後需要實例所有者 DBADM,最簡單的方法是將系統資料庫變數 DB2_RESTORE_GRANT_ADMIN_AUTHORITY 設置為 YES(在 Fix Pack 2 及更高版本中可用)。然後我不必嘗試授予實例所有者 DBADM。它會自動授予恢復到實例中的任何數據庫。

引用自:https://dba.stackexchange.com/questions/8127