指定为定义者的用户不存在

时间:2016-03-25 15:57:25

标签: mysql database

将数据库的备份导入到现有网站后,出现以下错误:

  

指定为定义者的用户(' someuser' @'%')不存在

我已经登录了我的数据库,当我执行

SHOW PRIVILEGES;

我可以看到我被允许

  

"向其他用户提供您拥有的特权......"

因此,我执行

CREATE USER 'someuser'@'localhost' IDENTIFIED BY 'password';

但是我收到以下错误:

  

#1227 - 拒绝访问;您需要(至少一个)此操作的CREATE USER权限

我也试过了

GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;

替代方案,但得到了以下回应:

  

#1045 - 拒绝访问用户'其他用户' @'%' (使用密码:是)

请有人帮我解决这个问题!我已经阅读了另一篇类似的帖子,但这些答案对我来说并不适用,因为我得到了上述指定的回复。

2 个答案:

答案 0 :(得分:1)

导致创建脚本失败的定义者与存储过程/函数,事件和触发器有关。

enter image description here

解决您的问题的一种方法是搜索并替换您自己的用户在脚本中的所有不存在用户的实例。

答案 1 :(得分:0)

正如@Jonathan所说,definer通常与函数/触发器定义有关。

现在关于您的第一个错误,您需要在导入之前定义'someuser'@'%'。这与'someuser'@'localhost'不同。

关于#1227 - Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation,这意味着您的mysql用户没有此权限。

您需要使用root登录,或者授予当前用户CREATE USER权限。