
遇到 Error 1045 (28000): Access denied for user ‘root’@‘localhost’ 错误是新手在配置 MySQL 时的常见问题。这通常意味着 root 用户无法通过提供的密码访问 MySQL 服务器。本篇文章将详细介绍导致这一问题的原因,并提供多种解决方案,帮助你彻底解决此问题。最后还有我的微信供大家交流。
无论是开发环境还是生产环境,MySQL 都是一款备受欢迎的数据库管理系统。初次安装或重新配置时,可能会遇到 Error 1045 错误。解决这个问题,需要我们从配置、权限及密码管理多个角度入手,掌握系统的行为原理。

错误提示如下:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)这意味着:
root 和提供的密码不匹配。localhost,即本地连接。root 用户权限被限制。caching_sha2_password 插件,但某些客户端不支持。首先确认 MySQL 服务已启动:
sudo systemctl status mysql如果服务未启动,可以通过以下命令启动:
sudo systemctl start mysql如果密码错误,可通过 MySQL 的安全模式重置密码。
停止 MySQL 服务:
sudo systemctl stop mysql启动 MySQL 安全模式:
sudo mysqld_safe --skip-grant-tables &使用 root 用户登录:
mysql -u root更改密码:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';退出并重启 MySQL 服务:
sudo systemctl restart mysql在 MySQL 8.0 中,默认身份验证插件是 caching_sha2_password。如果你的客户端不支持,可切换为 mysql_native_password。
登录 MySQL:
mysql -u root -p检查当前插件:
SELECT user, host, plugin FROM mysql.user;修改为 mysql_native_password 插件:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';刷新权限:
FLUSH PRIVILEGES;检查 MySQL 配置文件(通常为 /etc/mysql/my.cnf 或 /etc/my.cnf),确保未设置限制登录。
打开配置文件:
sudo nano /etc/mysql/my.cnf确保 [mysqld] 部分未禁用 root 登录:
[mysqld]
skip-grant-tables = 0保存文件并重启 MySQL:
sudo systemctl restart mysql如果问题仍未解决,可以尝试删除并重新创建 root 用户。
登录 MySQL:
mysql -u root -p删除 root 用户:
DROP USER 'root'@'localhost';重新创建用户并赋予权限:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;完成以上操作后,通过以下命令验证登录:
mysql -u root -p输入新设置的密码,确认可以成功登录。
Error 1045 是新手常遇到的问题,但通过本文介绍的方法,你应该能快速解决此问题。无论是重置密码、调整插件还是修改配置文件,每一步都针对特定场景提供了解决方案。希望这篇博客能帮助到你!
如果还有疑问,欢迎加我的微信一起交流。一起学习,一起进步!