MySQL 认证失败(如错误 1045)本质是身份校验未通过,需排查密码、用户存在性及连接权限;修复路径包括确认服务运行与端口连通、跳过权限重置 root 密码、检查用户 host 匹配、应对密码策略与配置干扰。

MySQL 认证失败(典型如错误代码 1045 Access denied)本质是身份校验没通过,不是服务挂了,也不是网络断了。核心要搞清三件事:密码对不对、用户存不存在、能不能从你这台机器连过去。下面分几种常见情况给出直接可用的修复路径。
确认服务在运行且 端口 可通
很多“登录失败”其实是服务根本没起来,或被 防火墙 拦住:
- Linux 执行
sudo systemctl status mysqld,看状态是否为 active (running);若非运行中,用sudo systemctl start mysqld启动 - Windows 检查【服务】里 MySQL 对应的服务名(如 MySQL80),右键启动;或命令行以管理员身份运行
net start MySQL80 - 测试本地连通性:
mysql -u root -p -h 127.0.0.1—— 用 IP 而非 localhost,可绕过 socket 和 DNS 解析问题 - 检查 3306 端口是否被占用或屏蔽:
telnet 127.0.0.1 3306(Windows)或nc -zv 127.0.0.1 3306(Linux/macOS)
跳过权限验证重置 root 密码
当你完全记不清 root 密码,又无法用其他账号登录时,需临时禁用权限检查:
- 先停服务:
sudo systemctl stop mysqld(Linux)或net stop MySQL80(Windows) - Linux:执行
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables";Windows:编辑my.ini,在[mysqld]下新增一行skip-grant-tables - 启动服务:
sudo systemctl start mysqld或net start MySQL80 - 免密登录:
mysql -u root(不加-p,也不输密码) - 重设密码(MySQL 5.7+ 推荐用
ALTER USER):USE mysql;ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';FLUSH PRIVILEGES; - 还原配置:删掉
skip-grant-tables或取消 环境变量:sudo systemctl unset-environment MYSQLD_OPTS,再重启服务
检查用户是否存在及 host 匹配
报错 Access denied for user 'root'@'localhost' 不代表密码错,可能 root 用户根本没在 'localhost' 这条记录里:
- 登录成功后(哪怕用
skip-grant-tables),执行:SELECT user, host FROM mysql.user; - 如果结果里没有
root+localhost,但有root+127.0.0.1或%,说明你当前连接方式(比如用mysql -u root -h localhost)匹配不到对应记录 - 补全用户(允许本地所有方式连接):
CREATE USER 'root'@'localhost' IDENTIFIED BY '密码';GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;FLUSH PRIVILEGES; - 远程访问需求?把
localhost换成%,但务必配合防火墙和强密码使用
留意密码策略与配置干扰
新版本 MySQL(尤其启用了 validate_password 插件)会拒绝弱密码,而配置文件里的某些设置也会静默阻断登录:
- 重设密码时报“Your password does not satisfy the current policy requirements”,说明密码太简单。必须含大小写字母 + 数字 + 特殊字符,长度 ≥8,例如:
NewPass123! - 检查
my.cnf或my.ini中是否有:skip-networking→ 会关闭 TCP 连接,只留本地 socketbind-address = 127.0.0.1→ 默认就限制本地,但若你用localhost连,有时会走 socket,有时走 TCP,行为不一致;改成0.0.0.0可统一处理(注意安全) - Windows 下确认
my.ini文件权限不是“完全控制”开放给 Everyone,避免 MySQL 拒绝加载配置






























