我一直在测试我帮助开发的一个软件,它位于32位应用服务器上。它将连接到64位数据库服务器,该服务器使用ibm db2 v10.1。
我是安装db2的人,但我确信它已经被修改过;我不再能够使用用户名/密码:db2admin/db2admin进行连接。
相反,我必须使用administrator/p@ssw0rd。我不记得自己创建了那个用户-它是计算机本身的本地帐户-但是从我的odbc测试来看,它可以连接到数据库。
然而,它似乎没有任何特权。我试图了解这个“用户”在哪里使用data studio 3.2.0失败了,尽管考虑到我在db2方面的经验(缺乏经验),这并不奇怪。
我的担心有两个方面:
查找此“管理员”所在的位置。
并修改它的特权来复制db2admin的特权,iirc是数据库管理员。
我在网上研究这个问题的尝试失败了——要么所谓的解决方案不起作用,要么太复杂了,我无法理解它是否起作用。
我试过以下方法:
直接通过data studio 3.2.0修改数据库;右键单击数据库,选择manage privileges,并检查我能找到的所有内容-注意,我没有找到任何“administrator”,只是一个“public”、“db2admin”、“sysdebug”。而且,它似乎也救不了人。
'select*from syscat.dbauth where grantee='administrator';我想这会产生一长串表。不知道该怎么处理它们,但是如果我用“db2admin”替换“administrator”,我得到的结果完全相同。
使用data studio创建名为“administrator”的新用户;
拜托,我想对此有所了解;db2是一个非常令人沮丧的数据库。我使用的是db2 v10.1、data studio 3.2.0和windows server 2008。

最佳答案

DB2身份验证依赖于外部机制,如OS安全性或LDAP。如果你的情况,它似乎是Windows安全。
DB2授权是内部的,因此任何授权都在数据库中,但有些例外。
在db2中有几个权限,一些在实例级,另一些在数据库级。在数据库级别,您可以通过查询目录在数据库中找到它们,并且可以将它们分配给用户或组。
实例级的其他权限与操作系统组(外部机制)关联。
数据库中的最高权限是dbadm,实例级的最高权限是sysadm。与sysamd关联的组中的每个用户都自动成为实例中所有数据库中的dbadm。
好吧,这只是对db2安全性的简短解释。这意味着您的“管理员”用户具有“连接”权限(有时“连接”权限是公共的,这意味着任何用户都可以连接),但它没有任何其他权限或权限。
最后,在windows环境中,还有另一个安全层,它将用户分为两组:db2admns和db2users。有关详细信息,请查看此链接http://publib.boulder.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.admin.sec.doc/doc/c0023391.html

07-26 09:36