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

时间:2013-11-24 10:13:36

标签: php mysql web

我试图用php调用存储过程。前一天这个工作正常,但是今天我收到一个错误“用户指定为定义者('用户名'@'前一天我的IP')不存在”

该过程位于主机中,我通过cpanel的远程MySql授予我的ip访问权限。 我使用的代码是正确的,并从这里获取http://www.php.net/manual/en/mysqli.quickstart.stored-procedures.php

是否因为我的ip今天不同而发生错误,即使我再次访问了? 我该如何解决?

3 个答案:

答案 0 :(得分:6)

如果您在使用mysql数据库时发现以下错误: 指定为定义者的用户('root'@'%')不存在 然后你可以使用以下方法解决它:

   grant all on *.* to 'root'@'%' identified by 'password' with grant option; 

归功于http://www.lynnnayko.com/2010/07/mysql-user-specified-as-definer-root.html

答案 1 :(得分:2)

必须已删除创建该过程的用户。由于您的用户ID映射到IP地址,因此IP的更改很可能是原因。如果您可以重新创建用户,那将是有效的。

或者,试试这个:

grant all on *.* to 'root'@'%' identified by 'password' with grant option;

这是处理它的一种稍微不安全的方式,但如果只是本地商业,那应该不是问题。

来源:http://www.lynnnayko.com/2010/07/mysql-user-specified-as-definer-root.html

答案 2 :(得分:0)

使用MySQL Ansible模块

- name: create root@% user
  mysql_user: name=root host=% password=password priv=*.*:ALL,GRANT state=present