我已经在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的访问权限,我缺少什么?
谢谢。
答案 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
答案 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访问权限,则可以: