MySQL 登录报错 ERROR 1045:Access denied for user ‘root‘@‘localhost‘(using password: YES

目录

  1. 问题描述

  2. 错误原因解析

  3. 多种解决方案

    • 方案一:重设 root 密码
    • 方案二:检查并修正用户权限
    • 方案三:修改配置文件启动选项
  4. 总结

  5. 附加建议


1. 问题描述

在使用 MySQL 时,经常会遇到以下报错:

复制代码
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

即 root 用户从 localhost 登陆时被拒绝访问。本文将分析该问题的可能原因,并给出几种常用解决方案。


2. 错误原因解析

导致 ERROR 1045 报错的常见原因包括:

  • MySQL 服务未启动或停止响应。
  • 使用了错误的用户名/密码组合。
  • 用户被限制从当前 IP 或 主机登录。
  • my.cnf / my.ini 配置文件中有禁止登录的项。
  • 数据库权限设置有误, root 用户缺少必要登录权限。

3. 多种解决方案

🧩 方案一:重设 root 用户密码(适用于忘记密码或登录失败)

步骤1: 停止 MySQL 服务

  • 在 Linux 系统:

    shell 复制代码
    sudo systemctl stop mysql
  • 在 Windows 系统:通过服务管理器停止 MySQL 服务。

步骤2: 启动 MySQL 跳过权限验证

  • 在 Linux 上执行:

    shell 复制代码
    sudo mysqld_safe --skip-grant-tables &
  • 或者编辑 my.cnf 或 my.ini,在 mysqld 下添加:

    ini 复制代码
    skip-grant-tables

    然后重启服务。

步骤3: 无密码模式连接

shell 复制代码
mysql -u root

步骤4: 修改 root 密码并刷新权限

sql 复制代码
use mysql;
update user set authentication_string = password('新密码') where user = 'root';
flush privileges;

步骤5: 重启 MySQL 服务并使用新密码登录。


🧩 方案二:检查并修正 root 用户权限

执行以下 SQL 查看当前 root 用户权限:

sql 复制代码
SHOW GRANTS FOR 'root'@'localhost';

如果权限设置不正确,可执行:

sql 复制代码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

确保 root 用户拥有从 localhost 登录的权限及执行权限。


🧩 方案三:修改配置文件中的登录限制项

检查配置文件(如 /etc/mysql/my.cnf 或 Windows 的 my.ini )中以下内容:

ini 复制代码
[mysqld]
skip-grant-tables

若添加这项,则 MySQL 会跳过权限校验启动,适用于紧急修复,但长期不建议开启。完成修改后,再次重设密码并移除该项。


4. 核心总结

  • ERROR 1045 通常是 用户名/密码错误、权限不足或配置阻止登录导致。
  • 重设密码、修正权限、或临时跳过权限验证是主要解决思路。
  • 滥用 skip-grant-tables 虽可临时修复但存在安全隐患,仅建议应急使用。

5. 附加建议

  • 定期为 root 用户更换强密码,并避免使用 root 在生产环境中直接登录。
  • 建议为每个应用或服务创建专用用户并授权,最小化权限原则。
  • 将数据库服务绑定到特定 IP 或网络,禁止 root 从 localhost 以外登录可提升安全。
  • 发生产环境时禁用 skip-grant-tables 模式并恢复权限表。
相关推荐
知行合一。。。3 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
TDengine (老段)3 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾4 小时前
01-数据库系统概述
数据库
二进制漫游记5 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996225 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
泡干脆面就番茄7 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato8 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情6738 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy3229 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
九月要晚安9 小时前
达梦DW与AFC对比
数据库