首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ 完美解决方法

Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ 完美解决方法

作者头像
默 语
发布2024-12-28 10:18:52
发布2024-12-28 10:18:52
5.7K00
代码可运行
举报
文章被收录于专栏:JAVAJAVA
运行总次数:0
代码可运行

摘要

遇到 Error 1045 (28000): Access denied for user ‘root’@‘localhost’ 错误是新手在配置 MySQL 时的常见问题。这通常意味着 root 用户无法通过提供的密码访问 MySQL 服务器。本篇文章将详细介绍导致这一问题的原因,并提供多种解决方案,帮助你彻底解决此问题。最后还有我的微信供大家交流。

引言

无论是开发环境还是生产环境,MySQL 都是一款备受欢迎的数据库管理系统。初次安装或重新配置时,可能会遇到 Error 1045 错误。解决这个问题,需要我们从配置、权限及密码管理多个角度入手,掌握系统的行为原理。

Error 1045 (28000): Access denied for user ‘root’@‘localhost’ 完美解决方法

正文

一、错误分析
1. 错误提示详解

错误提示如下:

代码语言:javascript
代码运行次数:0
运行
复制
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

这意味着:

  • 用户名 root 和提供的密码不匹配。
  • 访问来源为 localhost,即本地连接。
2. 常见原因
  • 密码错误:输入的密码不正确。
  • 用户权限问题root 用户权限被限制。
  • 身份验证插件不匹配:MySQL 8.0 默认使用 caching_sha2_password 插件,但某些客户端不支持。
  • MySQL 配置问题:可能未正确加载配置文件。
二、解决方案
1. 检查 MySQL 服务状态

首先确认 MySQL 服务已启动:

代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl status mysql

如果服务未启动,可以通过以下命令启动:

代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl start mysql
2. 通过安全模式重置密码

如果密码错误,可通过 MySQL 的安全模式重置密码。

停止 MySQL 服务:

代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl stop mysql

启动 MySQL 安全模式:

代码语言:javascript
代码运行次数:0
运行
复制
sudo mysqld_safe --skip-grant-tables &

使用 root 用户登录:

代码语言:javascript
代码运行次数:0
运行
复制
mysql -u root

更改密码:

代码语言:javascript
代码运行次数:0
运行
复制
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';

退出并重启 MySQL 服务:

代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl restart mysql
3. 检查身份验证插件

在 MySQL 8.0 中,默认身份验证插件是 caching_sha2_password。如果你的客户端不支持,可切换为 mysql_native_password

登录 MySQL:

代码语言:javascript
代码运行次数:0
运行
复制
mysql -u root -p

检查当前插件:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT user, host, plugin FROM mysql.user;

修改为 mysql_native_password 插件:

代码语言:javascript
代码运行次数:0
运行
复制
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';

刷新权限:

代码语言:javascript
代码运行次数:0
运行
复制
FLUSH PRIVILEGES;
4. 修改配置文件

检查 MySQL 配置文件(通常为 /etc/mysql/my.cnf/etc/my.cnf),确保未设置限制登录。

打开配置文件:

代码语言:javascript
代码运行次数:0
运行
复制
sudo nano /etc/mysql/my.cnf

确保 [mysqld] 部分未禁用 root 登录:

代码语言:javascript
代码运行次数:0
运行
复制
[mysqld]
skip-grant-tables = 0

保存文件并重启 MySQL:

代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl restart mysql
5. 删除并重新创建用户

如果问题仍未解决,可以尝试删除并重新创建 root 用户。

登录 MySQL:

代码语言:javascript
代码运行次数:0
运行
复制
mysql -u root -p

删除 root 用户:

代码语言:javascript
代码运行次数:0
运行
复制
DROP USER 'root'@'localhost';

重新创建用户并赋予权限:

代码语言:javascript
代码运行次数:0
运行
复制
CREATE USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
三、验证解决方案

完成以上操作后,通过以下命令验证登录:

代码语言:javascript
代码运行次数:0
运行
复制
mysql -u root -p

输入新设置的密码,确认可以成功登录。

四、预防措施
  1. 备份配置:在修改前备份 MySQL 配置文件和重要数据。
  2. 设置强密码:避免使用弱密码。
  3. 定期更新:保持 MySQL 版本和客户端工具的更新。

总结

Error 1045 是新手常遇到的问题,但通过本文介绍的方法,你应该能快速解决此问题。无论是重置密码、调整插件还是修改配置文件,每一步都针对特定场景提供了解决方案。希望这篇博客能帮助到你!

如果还有疑问,欢迎加我的微信一起交流。一起学习,一起进步!

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 引言
  • Error 1045 (28000): Access denied for user ‘root’@‘localhost’ 完美解决方法
    • 正文
      • 一、错误分析
      • 二、解决方案
      • 三、验证解决方案
      • 四、预防措施
    • 总结
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档