利用备份介质往不同的实例恢复后的权限问题

## 场景
在A 机器备份介质后,恢复备份为新的系统,实例名和数据库名均与备份系统不同;假设A机器的实例用户ainst, b机器的实例用户为binst。
在A 机器进行备份,A 机器由于分区容量受限,采用压缩备份;B 机器用A 机器的备份介质进行恢复,要求实例名和数据库名不同。

## 解决方法
A 机器备份
$ db2 backup database db_name online to /db2data compress include logs

传送到B 机器后进行恢复
$ db2 restore database db_name from /db2data/backup taken at 20150805145729 into new_db_name logtarget /db2data/backup/logs

$  db2 "rollforward database ne_db_name to end of logs and stop overflow log path(/db2data/backup/logs)"

恢复之后,B 机器新建的实例用户binst只能连接,无查询权限
$ db2 "select * from syscat.tables fetch first rows only"
SQL0551N  "FUNDINS" does not have the required authorization or privilege to
perform operation "EXECUTE" on object "NULLID.SQLC2H23".  SQLSTATE=42501

B 机器上新建ainst用户,与binst同一用户组,配好db2 的bash_profile 之后,连接上new_db_name ,给binst 授权dbadm 权限
$ db2 "grant dbadm on database to user binst

此时binst 用户能够访问数据库表了。

按照DB2 的权限,sysadm 为组用户权限,binst 用户和ainst 用户为同一用户组,binst应该也具有查询表的权限,不应当是通过新建备份库的实例用户再授权新实例用户这样别扭的操作流程,而且授权dbadm 权限之后,binst 用户无法给其他用户授权。

想不太明白为什么DB2 其中的原因,求各位大神帮忙解释解释。感谢!
参与4

3同行回答

monotsengmonotseng数据库开发工程师xx保险
回复 2# l954368978 多谢大神帮忙,我尝试看看行不行。显示全部
回复 2# l954368978
多谢大神帮忙,我尝试看看行不行。收起
IT咨询服务 · 2015-08-08
浏览623
monotsengmonotseng数据库开发工程师xx保险
多谢大神帮忙,我尝试看看行不行。显示全部
多谢大神帮忙,我尝试看看行不行。收起
IT咨询服务 · 2015-08-08
浏览605
l954368978l954368978数据库管理员ytx
db2set DB2_RESTORE_GRANT_ADMIN_AUTHORITIES=ondb2stopdb2start之后再恢复显示全部
db2set DB2_RESTORE_GRANT_ADMIN_AUTHORITIES=on
db2stop
db2start
之后再恢复收起
金融其它 · 2015-08-08
浏览650

提问者

monotseng
数据库开发工程师xx保险
擅长领域: 服务器存储AIX

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2015-08-08
  • 关注会员:1 人
  • 问题浏览:2379
  • 最近回答:2015-08-08
  • X社区推广