讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在MySQL中解决Error 1045 Access denied for user报错

秋静君_5919

秋静君_5919

发布时间:2026-10-02 07:22:20

|

513人浏览过

|

来源于php中文网

原创

Error 1045是MySQL认证阶段明确拒绝登录,非网络或配置问题;关键看报错后缀:(using password: YES)说明密码校验失败,(using password: NO)说明未传密码,二者处理路径完全不同。

如何在mysql中解决error 1045 access denied for user报错

直接说结论:Error 1045 不是网络不通、不是驱动版本错、也不是应用配置漏了参数,而是 MySQL 在认证阶段明确拒绝了登录请求。关键看报错末尾的 (using password: YES) 或 (using password: NO) ——它决定了你该修密码,还是该修权限表。

看懂报错后缀才能分清问题类型

MySQL 的 1045 错误严格分两类,处理路径完全不同:

  • Access denied for user 'root'@'localhost' (using password: YES):密码已发送,但校验失败 → 密码错、插件不兼容、或账号被锁
  • Access denied for user 'root'@'%' to database 'myapp'(无 using password 后缀):登录成功,但访问库时被拒 → 授权缺失,不是密码问题

很多人卡在第二类上反复重置密码,其实根本不需要动密码。先复制完整报错,盯住最后几个字符再动手。

Windows 下 root@localhost 密码错的快速修复

Windows 环境下最常见的是重装后没设密、或初始随机密码没记录。别急着改配置,按顺序执行:

  • 用管理员权限打开 CMD,停服务:net stop mysql80(服务名以 services.msc 中实际为准)
  • 手动跳过权限表启动:mysqld --skip-grant-tables --shared-memory(路径需 cd 到 bin 目录下)
  • 新开一个 CMD,直接连:mysql -u root(此时无需密码)
  • 执行重置(MySQL 8.0+ 必须用 ALTER USER):ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass123'; FLUSH PRIVILEGES;
  • 关掉 mysqld 进程,正常启动服务:net start mysql80

注意:--shared-memory 是 Windows 必加参数,否则 --skip-grant-tables 可能不生效;FLUSH PRIVILEGES 不可省,否则新密码不加载。

Accessory Bundles
Accessory Bundles

为多SKU配件店铺(如全系列手机壳、表带)设计交叉销售和捆绑结构。当用户提及捆绑销售时使用。

下载

MySQL 8.0+ 认证插件不兼容导致的 1045

MySQL 8.0 默认用 caching_sha2_password,但 Navicat 旧版、某些 Spring Boot 驱动(如 mysql-connector-java 5.x)、甚至部分 PHP PDO 默认不支持。现象就是:密码没错,但始终报 (using password: YES) 拒绝。

  • 进 MySQL 后查当前插件:SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
  • 强制切回兼容插件:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpass';
  • 如果要支持远程连接,还得同步改 'root'@'%' 条目,并确认 bind-address 在 my.ini 里没锁死为 127.0.0.1

改完必须 FLUSH PRIVILEGES,且客户端要重启(Navicat 尤其要完全退出再开,缓存插件类型)。

root@'%' 登录成功但进不了库的典型场景

这个最容易被当成密码问题来折腾。其实只要报错里没出现 using password,就说明 root 已经连上了,只是没被授权访问目标库。

  • 先确认用户是否存在且 host 匹配:SELECT host, user FROM mysql.user WHERE user = 'root'; —— 如果只有 'localhost' 没有 '%',那远程连接根本连不上,不会走到“进库”这步
  • 检查具体库权限:SHOW GRANTS FOR 'root'@'%'; —— 如果输出里没有 ON `myapp`.* 或类似语句,就是授权缺失
  • 补授权(谨慎!):GRANT ALL PRIVILEGES ON myapp.* TO 'root'@'%'; FLUSH PRIVILEGES;
  • 如果应用用的是 jdbc:mysql://127.0.0.1:3306/...,注意 127.0.0.1 走 TCP,匹配的是 'root'@'127.0.0.1' 或 'root'@'%',不是 'root'@'localhost'(后者走 socket)

真正麻烦的是混合环境:本地开发用 localhost,测试服用 127.0.0.1,CI 流水线又用容器 IP —— 得确保对应 host 条目都存在且权限一致,否则同一套配置在不同环境表现不一。

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2033

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1259

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

735

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2712

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

4488

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1039

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

4751

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

4262

2023.08.14

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 178人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 282人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn