我试图用php调用存储过程。前一天这个工作正常,但是今天我收到一个错误“用户指定为定义者('用户名'@'前一天我的IP')不存在”
该过程位于主机中,我通过cpanel的远程MySql授予我的ip访问权限。 我使用的代码是正确的,并从这里获取http://www.php.net/manual/en/mysqli.quickstart.stored-procedures.php
是否因为我的ip今天不同而发生错误,即使我再次访问了? 我该如何解决?
答案 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