指定为定义者的用户不存在-GRANT无法修复

时间:2019-06-25 14:02:19

标签: mysql

在后端运行MySQL 5.5的PHP webapp多年没有问题之后,今天突然出现了权限问题。

每当我尝试运行INSERT语句(从PHP或Workbench或Heidi)时,都会收到以下错误消息:The user specified as a definer ('my_user'@'1.2.3.%') does not exist

一个症状是INSERT语句不能由我的PHP或远程客户端(如Workbench或Heidi)执行。我尝试了以下建议的各种解决方案:

MySQL error 1449: The user specified as a definer does not exist

Error: 1449, "The user specified as a definer ('root'@'localhost') does not exist"

所有内容都指向运行GRANT语句。我已经按照建议尝试了各种GRANT,但始终会收到此错误:

Access denied for user

似乎我的权限被破坏或发生了什么。因此,我在VPS上的BlueHost控制面板中创建了一个全新的数据库用户,并赋予了全部特权。对于这个全新的用户,我也得到同样的错误。

BlueHost支持人员不知道该怎么办。

一些Stack文章说要弄乱TRIGGERS或STORED PROCS权限-但是我没有任何这些类型的对象。简单的INSERT语句会导致此错误,也可能导致UPDATE,但是目前我不确定。

用户一如既往地拥有全部特权。

我还能尝试什么?有什么方法可以修复损坏的权限?我可以毫无问题地运行SELECT语句。

我尝试用root用户连接到DB(使用与连接WHM时相同的密码),但是它不喜欢我的密码或一般用户。我从未针对该数据库将root用户设置为特定用户,并且我不确定这是个好主意。我一直使用专门为此数据库创建的特定用户。同样,过去5年完全没有问题。数据库尚未升级,没有数据库更改,没有用户更改,什么都没有。

请帮助,并预先感谢。

1 个答案:

答案 0 :(得分:0)

我解决了。我最终以不同的名称创建了一个新数据库,并创建了一个新的管理员用户。然后我针对它运行了数据库备份/转储脚本。使用这个新的数据库,一切都可以再次完美运行。旧的DB仍然被顶住。

我认为旧数据库中的权限已损坏。