如何处理 MySql ERROR 1133 (42000):在用户表中找不到任何匹配的行?

如何处理 MySql ERROR 1133 (42000):在用户表中找不到任何匹配的行?

我不断收到以下错误信息:

1045 无法登录 MySQL 服务器

我尝试了以下方法:

  1. sudo service mysql stop(一切顺利)

  2. sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &(一切顺利)

  3. mysql -u root(一切顺利)

  4. FLUSH PRIVILEGES;(一切顺利)

  5. SET PASSWORD FOR root@'localhost' = PASSWORD('password');(我收到以下错误:)

    ERROR 1133 (42000): Can't find any matching row in the user table
    
    mysql> select User from mysql.user;
    
    +------------------+
    
    | User             |
    
    +------------------+
    
    | linux            |
    
    | root             |
    
    | debian-sys-maint |
    
    +------------------+
    
    3 rows in set (0.00 sec)
    

答案1

当你这样做

SET PASSWORD FOR root@'localhost' = PASSWORD('password'); 

root您正在更新具有 name和 location的用户的密码localhost。从您的用户表结果来看,我得出结论,没有这样的行。似乎有一行带有root127.0.0.1,因此您可能需要这一行。

    SET PASSWORD FOR root@'127.0.0.1' = PASSWORD('password'); 

请尝试理解这两行之间的区别,以及为什么应该这样做而不是前者:我希望这可以帮助您了解哪里出了问题以及为什么要这样做,因为它可能不准确:如果注释添加在问题中并且格式正确,则它们将更容易阅读:D

相关内容