【问题标题】:Error: 1449, "The user specified as a definer ('root'@'localhost') does not exist"错误:1449,“指定为定义者 ('root'@'localhost') 的用户不存在”
【发布时间】:2016-11-16 15:18:42
【问题描述】:

当我尝试通过我的应用程序检索数据或将数据插入数据库时​​出现上述错误。 proc代码如下

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_createUser`(
    IN p_name VARCHAR(20),
    IN p_username VARCHAR(20),
    IN p_password VARCHAR(20)
)
BEGIN
    if ( select exists (select 1 from tbl_user where user_username = p_username) ) THEN

        select 'Username Exists !!';

    ELSE

        insert into tbl_user
        (
            user_name,
            user_username,
            user_password
        )
        values
        (
            p_name,
            p_username,
            p_password
        );

    END IF;
END $$
DELIMITER ;

但是,当我在我的 sqlyog 中运行以下查询时,它返回 1: SELECT EXISTS(SELECT 1 FROM mysql.user WHERE USER = 'root');

我正在使用 XAMPP 和 Python 来制作我的应用程序。 提前致谢。

【问题讨论】:

  • select host from mysql.user where user = 'root' 返回什么?
  • 我猜它实际上是root@%,而不是root@localhost
  • @Barmar 127.0.0.1, ::1, 本地主机
  • @Barmar 您的意思是要在创建定义行中进行更改吗?
  • 我猜它不会在查询中返回localhost。现在我不明白您为什么会收到错误消息。

标签: mysql sqlyog


【解决方案1】:
grant all on *.* to 'root'@'%' identified by 'password' with grant option; 

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

【讨论】:

  • 分辨率和错误信息一样晦涩难懂,但确实有效!
  • 这对我很有帮助。我尝试了很多其他解决方案!
  • 我可以知道该命令的反义词是什么吗?我想测试一下谢谢
猜你喜欢
  • 2020-09-19
  • 2017-02-16
  • 2012-04-27
  • 2020-08-23
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多