mysql 备份导出 ('root'@'%') does not exist

2 篇文章 0 订阅

The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES

MySQL的导出语句或备份时的异常

Linux下:

mysqldump -hlocalhost -uroot -prootdatabasename > /home/myfile/seattle.sql

在Windows下:

mysqldump -hlocalhost -uroot -prootdatabasename> e:/myfile/seattle.sql

出现了如下问题:

mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES

分析后发现,是因为存储过程的创建是seattle用户定义者,而现在备份的是用root用户。

还有数据库在使用状态,所以导出数据时报错,不是存储过程定义者就需要锁表

--lock-all-tables,-x

在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。

mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。

在mysqldump时使用 -x 选项解决此问题。

解决方案有两种:

第一种:直接加参数

mysqldump -hlocalhost -uroot -proot -x databasename> e:/myfile/seattle.sql

再执行导出就OK

----------------------------------------------------------------------------------------------------------------

第二种:赋予当前导出者seattle所有的权限

只要给seattle用户再添加一个对全部host都有可以访问的权限

操作如下:

登陆mysql

mysql -u root -proot

mysql >grant all privileges on *.* to seattle@"%"identified by "123";

mysql >flush privileges;

在cmd执行导出就OK

----------------------------------------------------------------------------------------------------------------

以上问题可以得出,创建存储过程如果默认参数在备份时有局限性。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值