遇到 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 是新手常遇到的问题,但通过本文介绍的方法,你应该能快速解决此问题。无论是重置密码、调整插件还是修改配置文件,每一步都针对特定场景提供了解决方案。希望这篇博客能帮助到你!
如果还有疑问,欢迎加我的微信一起交流。一起学习,一起进步!