使用 SQLyog 导出 MySQL 所有数据库会产生调用者/定义者权限错误

Posted

技术标签:

【中文标题】使用 SQLyog 导出 MySQL 所有数据库会产生调用者/定义者权限错误【英文标题】:Export MySQL all databases with SQLyog produces invoker / definer rights error 【发布时间】:2016-04-15 19:15:25 【问题描述】:

我们有一个使用 SQLyog 导出所有数据库(包括 mysql)的作业,该作业每晚运行。最近,我们添加了一个使用函数的视图:

SELECT
     ps.SubmissionDate SubmissionDate,
     ps.TransactionNo,
     ps.FormNumber
FROM
     premier_submissions ps
UNION
SELECT
     psh.LastSubmissionDate SubmissionDate,
     psh.TransactionNo,
     psh.FormNumber
FROM
     premier_submissionhistory psh
UNION
SELECT
     SPLIT_STR (ps.SubmissionDates, '*', 1) SubmissionDate,
     ps.TransactionNo,
     ps.FormNumber
FROM
     premier_submissions ps
UNION
SELECT
     SPLIT_STR (psh.ResubmissionDates, '*', 1) SubmissionDate,
     psh.TransactionNo,
     psh.FormNumber
FROM
     premier_submissionhistory psh

现在当这个导出作业运行时,我们得到这个错误:

“查看‘pride.charges_by_submission_date’引用无效表 或列或函数或视图的定义者/调用者无权 使用它们”

函数 SPLIT_STR 不是新的,可以很好地导出。更奇怪的是,我可以创建一个只导出这个视图和函数的作业,而且效果很好。仅当我导出所有内容并且一致时,该作业才会失败 - 每次都会发生错误。是的,我已经检查了正在执行备份的帐户的权限。我在 SQLyog 论坛上发帖,没有得到任何回应。

【问题讨论】:

【参考方案1】:

问题在于用户有 SELECT 权限,允许将函数导出到表中,但没有 EXECUTE 权限,这显然是导出使用函数的视图所必需的。

【讨论】:

以上是关于使用 SQLyog 导出 MySQL 所有数据库会产生调用者/定义者权限错误的主要内容,如果未能解决你的问题,请参考以下文章

使用SQLyog将Mysql中的表导出为Excel

怎么使用sqlyog导出数据库

mysql SQLyog导入导出csv文件

sqlyog和heidisql哪个好用

SQLyog怎么导出数据库以及导出表

mysql 每个表只导出1000条数据