使用 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 所有数据库会产生调用者/定义者权限错误的主要内容,如果未能解决你的问题,请参考以下文章