【问题标题】:The user specified as a definer does not exist - unknown user指定为定义者的用户不存在 - 未知用户
【发布时间】: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


    【解决方案1】:

    我必须为神秘用户设置密码:

    UPDATE user SET `authentication_string` = PASSWORD('******') WHERE `User` = 'usaarbit';
    

    ...然后授予:

    GRANT ALL ON *.* TO 'usaarbit'@'%' IDENTIFIED BY '******'; FLUSH PRIVILEGES;
    

    解决了。

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 2013-12-09
      • 2021-07-28
      • 2017-02-16
      • 2022-01-14
      • 2012-04-27
      • 2019-11-07
      • 2016-11-16
      相关资源
      最近更新 更多