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 一栏
没修改之前是另外一个 deafiner
解决方法:
1. 修改definer 下面是生成修改
SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", table_name, " AS ", view_definition, ";") FROM information_schema.views WHERE 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'; FLUSH PRIVILEGES;
上面有两处需要修改成你自己的 一个 'someuser'@'%' 还有一处 'complex-password' 改成你的密码
慢慢沉淀自己
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!