mysql dump 1449_Mysqldump 1449 错误解决 mysqldump: Got error: 1449

备份数据库

$ mysqldump -uroot -p db > backup/db.sql

上面的terminal 执行

出现了下面的错误

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

问题解决:

原因:

主要原因是当时创建 view procedure 或者trigger使用的user 已经被删除了 这个问题最常见的是数据库迁移之后

我的问题是我db里面一个view 的创建者没有了

可视化查看 information_schema.VIEWS 表格中 查看Deafiner 一栏

78e6cbbbda961c0defdebf12c12d9195.png

没修改之前是另外一个 deafiner

解决方法:

1. 修改definer 下面是生成修改

SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW",

table_name, "AS", view_definition, ";")FROMinformation_schema.viewsWHERE table_schema='your-database-name';

修改  `youruser`@`host` 变成你的  'your-database-name'  变成你的db

就会生成一个alter 语句 可视化编辑也可以

修改成比如说 root@localhost 或者 任何一个用户 (当然你要考虑到这个view 要拥有什么权限,你备份的时候使用的是super 权限 可以不用管那么多,你可以直接备份下来,但是要使用 这个view 就要考虑权限 了,我直接修改成root@localhost 了)

如果是一个procedure 修改 deafiner

UPDATE `mysql`.`proc` p SET = 'user@%' WHERE definer='root@%'

具体的也可以先查看 proc 表 然后再修改

2. 增加一个definer

错误: The user specified as a definer ('root'@'%') does not exist

执行:

GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';

FLUSHPRIVILEGES;

上面有两处需要修改成你自己的 一个 'someuser'@'%' 还有一处 'complex-password'  改成你的密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值