Li Ming

mysql 错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

今天无意之中将 CentOS 的 root 密码改了一下,结果发现用客户端连接 mysql 的时候,提示错误:

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

网上找了类似的文章来解决问题:

参考上述文章的说明,在停 mysql 服务这一步就卡住了。

试了如下这几个方法都不灵:

方法一:输入命令 /usr/bin/mysql stop,结果返回:ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

方法二:不用 MySql 客户端,直接命令行连 数据库,通过 SSH 执行:mysql -uroot,提示错误如方法一,没戏

方法三:重启 Linux 服务器,没戏

方法四:通过命令 ps aux|grep mysql 找到 mysql 进程,kill -9 PID 杀进程,也没杀掉

懵逼状态下,求助同事,他给了我另一个停服务的办法:service mysql stop(Linux 学的不到家啊,!-),命令返回结果:

Redirecting to /bin/systemctl stop  mysql.service
[root@localhost ~]# ps aux|grep mysql
root      3532  0.0  0.0 112664   956 pts/0    R+   18:23   0:00 grep --color=auto mysql

剩下的就简单了:

  • 通过 mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 跳过密码验证
  • mysql -uroot 顺利的无密码进入 mysql
  • 通过如下命令修改数据库密码,并断开连接
UPDATE user SET Password=PASSWORD('liming') where USER='root';
FLUSH PRIVILEGES;
quit;
  • 杀掉 mysqld_safe 进程,重新启动 mysql 服务。

至此,万事大吉,通过此文记录处理过程,以便后续回顾。