![如何处理 MySql ERROR 1133 (42000):在用户表中找不到任何匹配的行?](https://linux22.com/image/1098145/%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%20MySql%20ERROR%201133%20(42000)%EF%BC%9A%E5%9C%A8%E7%94%A8%E6%88%B7%E8%A1%A8%E4%B8%AD%E6%89%BE%E4%B8%8D%E5%88%B0%E4%BB%BB%E4%BD%95%E5%8C%B9%E9%85%8D%E7%9A%84%E8%A1%8C%EF%BC%9F.png)
我不断收到以下错误信息:
1045 无法登录 MySQL 服务器
我尝试了以下方法:
sudo service mysql stop
(一切顺利)sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
(一切顺利)mysql -u root
(一切顺利)FLUSH PRIVILEGES;
(一切顺利)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
。从您的用户表结果来看,我得出结论,没有这样的行。似乎有一行带有root
和127.0.0.1
,因此您可能需要这一行。
SET PASSWORD FOR root@'127.0.0.1' = PASSWORD('password');
请尝试理解这两行之间的区别,以及为什么应该这样做而不是前者:我希望这可以帮助您了解哪里出了问题以及为什么要这样做,因为它可能不准确:如果注释添加在问题中并且格式正确,则它们将更容易阅读:D