DB2 SYSADM Windows-没有运气

时间:2019-01-02 18:34:27

标签: db2 db2-luw

我已经在Windows 2012服务器上安装了DB2 10.5 Enterprise Edition,但是无法获得SYSADM访问权限。我还将从类似服务器获取的DB2数据库恢复到新服务器,但是无法获得SYSADM权限来浏览数据。安装新安装时以域帐户作为实例所有者,并创建了2个本地组(DB2ADMNS和DB2USERS),并添加了实例所有者并将管理帐户添加到DB2ADMNS组。无论我做什么,都无法浏览使用DB2ADMNS组的任何成员(本地或域)还原的数据库上的数据。我已经将SYSADM_GROUP设置为DB2ADMNS,并将全局注册表设置为DB2_GRP_LOOKUP = local,但是仍然没有运气。每次进行更改或注销并重新登录时,我都重新启动了DB2,但仍然没有运气。

至少要通过实例所有者帐户获得SYSADM对DB2的访问权限,我缺少什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

要恢复,请删除已还原的数据库,然后尝试以下操作。

在执行数据库的还原之前,必须首先(在db2cmd管理员窗口中)执行以下命令:

db2set DB2_RESTORE_GRANT_ADMIN_AUTHORITIES=ON
db2stop force
db2start

确保所有命令成功完成。现在重试还原并检查您拥有什么权限。

这是documented

如果在执行完上述操作后仍然遇到问题,则需要编辑问题以准确显示所有命令和结果,新旧实例名,这两个实例的syscat.dbauth条目,并另外显示db2set -all的输出,以及实例所有者帐户尝试访问数据时db2diag.log中显示的确切消息。

在许多情况下,一旦您连接到数据库并且该视图具有PUBLIC选择,只需研究syscat.dbauth的内容即可指出问题所在。具有DATAACCESS的用户需要能够在新环境上连接数据库,因此在域环境中,DB2_GRP_LOOKUP应该与原始Db2服务器相同。如果syscat.dbauth中有大量行,则可以使用SELECT * FROM TABLE (SYSPROC.AUTH_LIST_GROUPS_FOR_AUTHID ('YOUR_ACCOUNT')) AS T

这样的SQL进行过滤

答案 1 :(得分:0)

DB2中的SYSADM授权(从9.7开始)不一定允许用户“浏览数据”,如@Ian Bjorhovde所述。

select * 
from table(auth_list_authorities_for_authid('YOUR_ACCOUNT', 'U')) 
where authority in ('SYSADM', 'DBADM', 'DATAACCESS');

AUTHORITY  D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE 
---------- ------ ------- -------- --------- ---------- ----------- ------ 
SYSADM          *       Y        *         *          *           *      * 
DBADM           N       N        N         N          N           N      * 
DATAACCESS      N       N        N         N          N           N      *

根据此查询的结果,您的YOUR_ACCOUNT用户确实具有SYSADM权限,但是在数据库中没有DBADM或DATAACCESS权限。 这可能意味着,在进行各种数据访问尝试时会出现SQL0551N错误。 如果您想获得该用户的DBADM / SECADM访问权限,则可以:

  • 在RESTORE DATABASE命令之前使用DB2_RESTORE_GRANT_ADMIN_AUTHORITIES注册表变量
  • 将这些权限从其他拥有SECADM的用户授予您的用户 权限(查询SYSCAT.DBAUTH表以获取权限)