mysql数据迁移记录

       公司在阿里云上购买了两台mysql服务器,其中一台之前为了简单测试,只买了低配的3个月,因为即将到期需要将上面的测试库迁移到另一台。

        阿里直接就提供了数据迁移的功能,好开心,按照指引一步步配置完就好了。然后问题来了。

        1)RDS中必须创建高权限账号,下文称此为管理员账号,否则无法进行相关的操作,而且迁移时只是迁移了库表及数据,存储过程等并未被迁移。

       2)后续做增量迁移是需要收费的,虽然费用很低,但是速度很慢。

        

       由于增量迁移的速度太慢,且存储过程也无法迁移,于是想到了navicat中的同步工具,很快的数据和存储过程都同步好了,然后问题又来了。

       为了保证安全等原因,并未对所有成员公开管理员账号,创建了一个新的用户,赋予相关的权限供正常开发测试使用,下文称测试账号,数据全部迁移完毕后用测试账户测试后,发现所有存储过程都无权访问,管理员账号已经赋予了测试账号相关权限了,还是无法访问。错误如下:

Java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted.......

      开始查询资料,发现大家都说JDBC在调用存储过程时不仅要有execute的权限,还需要对mysql.proc具有访问权限,否则她无法访问metadata。选用如下方式解决:

       grant select on mysql.proc to '测试账户'@'%'

       但是管理员并没有这样grant的权限。

       查看阿里云关于高权限账户的文档,发现只支持部分grant命令。

      

       无意中看到有人说不要用高权限账号创建库表及存储过程,否则可能造成其他用户无法访问。


       原来这才是问题的症结所在。


       创建测试账户后,赋予相关权限,然后将数据迁移的操作在测试账户下进行即可。


        写的真啰嗦。其实就是一个小问题而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值