MySQL存储过程迁移上云后遇到调用权限的问题,如何解决
MySQL存储过程迁移上云后,可能会因为权限问题导致调用存储过程或函数出错。
针对该情况,不同的Definer策略有不同的处理方法。本章节主要以user1为示例,介绍两种迁移Definer的策略下的处理方法。
策略一
在测试连接页面的目标库信息中填写数据库用户名user1,所有Definer迁移到该用户下选“是”。
这种策略下,源库所有存储过程和方法的Definer迁移到目标库后账号都会自动修改为user1,host改为% 。若在目标库上出现调用存储过程失败的情况,可执行如下操作:
- 使用uesr1账号登录到目标库RDS for MySQL实例。
- 如果需要使用其他账号调用存储过程,则该账号需要具有execute权限。
- 通过如下语句,使用user1授予其他账号执行存储过程的权限。
其中user表示需要调用存储过程的其他账号:
GRANT EXECUTE ON db.* TO user;
- 如果需要通过Java调用存储过程,则需要通过如下语句,使用user1授予其他账号查询mysql.proc表的权限。
授权语句可参考如下语句,user表示需要调用存储过程的账号:
GRANT SELECT ON mysql.proc TO 'user'@'%';
实时迁移 所有常见问题
- 如何判断数据迁移任务可以停止
- MySQL迁移中Definer强制转化后如何维持原业务用户权限体系
- MySQL存储过程迁移上云后遇到调用权限的问题,如何解决
- 如何确保业务数据库的全部业务已经停止
- 迁移日志提示can not get agency token
- Oracle到MySQL迁移时,索引超长如何处理
- Oracle等异构数据库迁移到MySQL后的数据库排序规则为什么是utf8mb4_bin
- RDS for MySQL不支持MyISAM引擎表,迁移时MyISAM如何处理
- 低版本迁移至MySQL 8.0,应该注意哪些问题
- MongoDB数据库迁移过程中,源数据库出现内存溢出(OOM)是什么原因
- 如何关闭集合均衡器Balancer
- 如何批量导出、导入事件(event)和触发器(trigger)
- 源库参数lower_case_table_names=1时,为什么不允许迁移包含大写字母的库或者表
- 分片集群MongoDB迁移前清除孤儿文档
- MySQL账号迁移后权限显示多了反斜杠“\”
more