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

Chr*_*ich 10 db2 windows permissions

我有一台装有 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
Run Code Online (Sandbox Code Playgroud)

这允许我附加到我的名为 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;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,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;
Run Code Online (Sandbox Code Playgroud)

然后 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;
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

编辑:我发现了一些与此相关的以下链接。仍然不确定如何让它工作,但至少我找到了一些文档。

Chr*_*ich 5

根据我对问题的编辑中的最后一个上述链接,我找到了答案。我无法调整系统帐户,因为我们从 LDAP 登录到我们的系统,我无法控制组等等。

所以我做了以下事情:

  1. 打开 DB2 GUI(这样做最容易)。
  2. 以 db2admin 身份连接到所需的数据库。
  3. 将我的登录作为用户添加到数据库中。
  4. 授予该 ID(我的 ID)的所有权限。
  5. 断开。
  6. 连接到所需的数据库作为我的 ID。
  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。它自动授予恢复到实例中的任何数据库。