前言:
现在咱们对“mysql创建函数报错”大致比较注意,兄弟们都想要分析一些“mysql创建函数报错”的相关知识。那么小编在网上汇集了一些对于“mysql创建函数报错””的相关文章,希望我们能喜欢,小伙伴们快快来了解一下吧!概述
最近碰到一个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方面的内容,感兴趣的朋友可以关注一下~
标签: #mysql创建函数报错