【发布时间】:2020-09-25 19:41:48
【问题描述】:
首先,这不是以下内容的重复: MySQL error 1449: The user specified as a definer does not exist
我有一个运行良好 5 年的 php 应用程序,它从连接到其 mysql 实例的 php 运行内联 sql。昨天突然用户开始收到此错误The user specified as a definer does not exist。
所以我启动了 HeidiSQL 并运行了以下插入语句,它应该可以正常工作:
INSERT INTO Users (Email) VALUES ('foo@bar.com')
我得到了这个确切的错误:
SQL Error (1449): The user specified as a definer ('usaarbit'@'24.10.133.%') does not exist.
我正在使用 BlueHost。一个问题是这个用户usaarbit不是我从Heidi连接的用户,也不是我的php webapp用来连接mysql的用户。事实上,我不认识那个用户。我认出了这个字符串:它是域的根 - 但它不是我设置的 mysql 用户。也许这是 bluehost 创建的一些默认自动生成的用户??
所以...还有其他 stack posts 关于这个错误,他们说要运行这样的东西:
GRANT ALL ON *.* TO 'usaarbit'@'%' IDENTIFIED BY 'complex-password';
FLUSH PRIVILEGES;
我不知道如何运行它,不知道usaarbit 用户到底是什么,因此不知道密码。
此外,在上面链接的堆栈文章中,它谈到了这个错误消息,就好像它只与存储的过程、视图和触发器有关。我正在运行一个普通的insert 语句。没有存储过程,没有视图,没有触发器。
我确实针对从 Heidi 和 PHP 连接到该数据库的实际用户(usaarbit_*****(隐藏,实际上不是星号))运行了 GRANT ALL,但正如预期的那样,这没有用,因为它不是用户有问题。
就好像,当尝试运行 INSERTs(选择继续正常工作)时,服务器上的 mysql 忽略了我尝试连接的用户,而是尝试连接这个神秘的usaarbit,它显然有搞砸了权限,我不知道密码。
另外,我的实际用户名是usaarbit_*****(被隐藏,实际上不是星号)。所以你可以看到用户名的前缀是usaarbit,但这不是用户名本身。
有什么想法吗?
【问题讨论】:
标签: mysql