MySqlException: The user specified as a definer ('root'@'%') does not exist解决方法

之前因为MySql安全问题,将root@%改为允许特定ip段进行远程连接,结果有一个接口报The user specified as a definer ('root'@'%') does not exist。

先确定到报错所涉及的表,然后查看了存储过程、触发器、视图等,最后发现有一个触发器的definer是root@%,但是这个已经被我改掉了

 然后删掉这个触发器,在服务器重新建立这个触发器,此时definer为root@localhost,然后程序正常执行。

总结:因为之前创建触发器时默认的definer为root@%(目前已经不存在),导致mysql认为现在的用户无权限访问该触发器,解决方法就是在当前用户下重建该触发器。

   数据库修改mysql.user后应检查,存储过程、触发器、视图等。

原文地址:https://www.cnblogs.com/tianyaguoke/p/10368566.html