我不断收到以下错误信息:
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