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)
任何帮助,将不胜感激。
编辑:我发现了一些与此相关的以下链接。仍然不确定如何让它工作,但至少我找到了一些文档。
- http://www.db2teamblog.com/2009/06/whats-new-in-db2-97.html
- http://lpetr.org/blog/archives/simplify-the-db2-9-7-security-model
- http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.ref.doc%2Fdoc%2Fr0000958.html
- http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14288459
- http://publib.boulder.ibm.com/infocenter/tivihelp/v4r1/index.jsp?topic=%2Fcom.ibm.tpc_V422.doc%2Ffqz0_t_preparing_to_install_db2_windows.html
- http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.sec.doc%2Fdoc%2Fc0055206.html
- http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.sec.doc%2Fdoc%2Fc0005479.html
根据我对问题的编辑中的最后一个上述链接,我找到了答案。我无法调整系统帐户,因为我们从 LDAP 登录到我们的系统,我无法控制组等等。
所以我做了以下事情:
瞧!db2admin 现在以所有权限登录。
编辑:我将离开上面的内容,因为它帮助我学习如何在 DB2 中做一些有趣的事情。但是,我了解到具有 DATAACCESS 和 ACCESSCTRL 权限的 DBADM/SECADM 授予实例所有者(在我的例子中是 db2admin id)拥有与数据库交互所需的所有权限。我实际上可以在脚本中注释掉上面的那些授权行。这些是从针对旧版本 DB2 运行的脚本中遗留下来的。我还发现,如果在从数据库 B 恢复到数据库 A 后需要让实例所有者 DBADM,最简单的方法是将注册表变量 DB2_RESTORE_GRANT_ADMIN_AUTHORITY 设置为 YES(在 Fix Pack 2 及更高版本中可用)。然后我不必尝试授予实例所有者 DBADM。它自动授予恢复到实例中的任何数据库。
归档时间: |
|
查看次数: |
70508 次 |
最近记录: |