今天在备份windows上db2数据的时候用的以下命令(原db2 dba用户为A)
db2 backup db db2demo
执行成功
然后再另一台同环境机器上执行
db2 create db db2demo
成功
db2 connect to db2demo
成功
db2 create schema db2rcs
成功
db2 grant dbadm on database to user B (因为恢复电脑用户名与备份机器用户名不同)
成功,(此时用户B对db2demo 有完全管理权限)
然后执行数据库恢复,命令
db2 restore db db2demo from e:\ taken at 20180531132230
成功
然后出现问题 ,用户B失去了数据库db2demo除了connect外的任何权限!
当再次执行刚刚执行成功过的命令
db2 grant dbadm on database to user B
时,依旧报错,没有grant权限。
换任何用户再使用grant命令,提示未授权,甚至不可以执行select 查看表。
经过多次反复试验后(此处省略试验了多少次:joy:),发现问题原因:备份时,数据库的有效dba用户是A,在另一台电脑执行db2 restore 命令恢复数据库db2demo后,db2demo 只有用户A才有dba权限。
解决办法:在恢复电脑上,创建用户A,并加入Administrators组(有的win10系统没有用户和组这个管理菜单了,而是被控制面板中的账户管理所代替,但是经我测试,控制面板中的账户管理没有找到管理用户和组的功能 - -!有人知道怎么弄请回帖告知)。
然后先删掉当前这个无法管理的库
db2 drop db db2demo
成功
重新建这个库,步骤同上,不同的是,在恢复备份之前,给A用户grant dbadm权限。恢复完成后,只有A用户有该库的dba权限。
发现这个问题的关键在于测试过程中,刚创建db2demo这个库时,未恢复备份之前,权限是没问题的。故怀疑是恢复备份文件后导致的权限问题。
在蛛丝马迹中寻找线索,过程很痛苦,结果很感人。
原文地址:https://www.cnblogs.com/hibugs/p/9120047.html