存储过程执行遭遇MySQL的 Error Code: 1449问题

28 篇文章 1 订阅

遭遇MySQL的 Error Code: 1449问题

问题描述:
1、MySQL数据库迁移,用MySQL Workbench,做数据导出。
2、导入到另外一个MySQL服务器上,表查询都正常,程序调用存储过程时出现问题,报1449错。

call mysql.loop_seek('c')	Error Code: 1449. The user specified as a definer ('skip-grants user'@'skip-grants host') does not exist	0.000 sec

3、用MySQL Workbench 查看相关表,存储过程都正常,编译也正常。错误号是用户权限的问题;
4、看用户表发现:
在这里插入图片描述
5、检查导出的sql文件
默认指定了这个用户skip-grants user@skip-grants host

CREATE DEFINER=`skip-grants user`@`skip-grants host` PROCEDURE 

6、按网上说的重新强制授权:

mysql> grant all privileges on *.* to 'skip-grants user'@'skip-grants host' identified by ".";
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> grant all privileges on *.* to 'skip-grants user'@'skip-grants host' identified by "qwe1234";
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> grant all privileges on *.* to 'skip-grants user'@'skip-grants host' identified by "Qwed1234#"; 
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

密码策略默认比较严格,大小写和特殊字符,才能通过。
但是想到是一个莫名其妙的用户,和程序中登录的用户不一致,还是不好。
不调整用户授权了,还是从根上解决此问题!!!

7、重新导入存储过程,为了不一个一个手工删除一堆的存储过程,生成批量删除脚本:

SELECT concat("DROP PROCEDURE " , t.specific_name," ;" ) as command FROM information_schema.routines t 
	where definer='skip-grants user@skip-grants host';
 

删除存储过程后,创建存储过程脚本中的’skip-grants user@skip-grants host’ 全部替换为自己用的用户。

程序再重新执行存储过程成功!
总之,就是存储过程的用户权限不对。

问题:MySQL Workbench 导出时为什么是指定这么奇怪的用户?如有高手指点一二。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值