记一次生产数据库mysqldump导出报错案例(附解决方法)
概述
最近碰到一个mysqldump导出报错的问题,由于这个问题比较特殊,所以先介绍下大致背景。
背景
前段时间做了权限隔离,之前都是用fsl_prod(%,localhost)来创建函数,后来设置为应用程序只能用fsl_prod(指定IP)连接,平时运维人员是用fsl_yw(%)来运维和创建函数,root只能localhost连接;
所以将fsl_prod(%)这个用户删除,今天mysqldump时发现有问题,具体报错如下:
报错
备份数据库命令
$ mysqldump -uroot -p fsl_prod
出现了下面的错误
mysqldump: Got error: 1449: The user specified as a definer ('fsl_prod'@'%') does not exist when using LOCK TABLES
解决过程
1、查看definer
主要原因是当时创建 view procedure 或者trigger使用的user 已经被删除了,这个问题最常见的是数据库迁移之后,我的问题是我db里面的存储过程的创建者没有了
1.1、查看mysql.proc查看definer
1.2、查看 information_schema.VIEWS表格中Deafiner 一栏
2、授权 root
试一下对root授权,看是不是可行,测试后发现不成功,回收root权限。
3、 增加一个definer
根据错误: The user specified as a definer ('fsl_prod'@'%') does not exist
执行:
grant all privileges on *.* to fsl_prod@'%' identified by 'fxxxxx'; --解决mysqldump问题 FLUSH PRIVILEGES;
好吧,执行后问题解决。
权限一做细果然之前留下的坑就越多,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
相关推荐
swazerz 2020-07-28
景泽元的编程 2020-06-21
chenjiazhu 2020-06-08
lightlanguage 2019-12-11
zhanbuquan 2020-08-15
云之飞踢 2020-08-15
Andrea0 2020-07-04
zjuwangleicn 2020-06-25
txt 2020-06-14
MissFuTT 2020-06-14
vivenwan 2020-06-07
msmysql 2020-06-06
inhumming 2020-06-06
muzirigel 2020-05-27
zjx0 2020-05-19
webliyang 2020-05-14
CoderJiang 2020-04-22
MySQL 2020-04-20