【MySQL 排错】Navicat 连接 localhost 报 2002 (10061) 完整排查记录(Windows + MySQL 8.4 用户模式)
摘要:本文记录 Windows 下 ZIP 方式安装 MySQL 8.4.10 后,使用 Navicat 连接
localhost时出现2002 - Can't connect to server on 'localhost' (10061)的完整排错过程。从现象、原理、排查命令到根因与解决方案一并整理,并补充安装阶段的常见坑,方便同类问题一次定位。关键词:MySQL 8.4、Navicat、2002、10061、Windows、连接被拒绝、用户模式启动
一、问题现象
本地已安装 MySQL 8.4.10,Navicat 中配置了连接info_system_demo,双击连接时报错:
2002 - Can't connect to server on 'localhost' (10061)Navicat 界面左侧能看到连接配置,但无法打开数据库,查询、表设计等功能全部不可用。
直观理解:客户端(Navicat)去敲本机 3306 端口的门,但门后没有人应答——不是密码错,而是MySQL 服务根本没在跑。
二、错误码含义(先搞清再动手)
| 错误 | 常见含义 | 本次是否命中 |
|---|---|---|
| 2002 | 无法连接到 MySQL 服务器 | 是 |
| 10061 | Windows 套接字错误:连接被拒绝(Connection refused) | 是 |
| 1045 | 用户名或密码错误 | 否 |
| 2003 | 无法解析主机名 | 否 |
10061 与 1045 的区别很重要:
- 10061:TCP 连上了目标端口,但没有任何进程在监听 → 先查MySQL 是否启动。
- 1045:能连上服务器,但认证失败 → 查账号密码。
很多人一看到 Navicat 报错就去改密码,本次问题改密码无效,因为服务器进程不存在。
三、环境与安装背景(为何容易踩坑)
本次 MySQL 采用ZIP 绿色安装,未使用官方 MSI 安装向导,也未注册 Windows 服务。原因如下:
- 使用
cdn.mysql.com下载mysql-8.4.10-winx64.zip解压到D:\WorkSoftware\MySQL\。 - 编写
my.ini,执行mysqld --initialize-insecure初始化数据目录。 - 尝试
mysqld --install注册服务时提示Install/Remove of the Service Denied(当前 PowerShell 无管理员权限)。 - 改为用户模式:通过
start-mysql.ps1启动mysqld.exe进程。
因此:
- 开机后 MySQL 不会自动启动;
- 没有「服务」可在「服务管理器」里一键启动;
- Navicat 配置再正确,不先启动 mysqld 就必然 10061。
四、排错过程(按推荐顺序)
4.1 第一步:确认 mysqld 进程是否存在
PowerShell 执行:
Get-Process-Name"mysqld"-ErrorAction SilentlyContinue本次结果:无输出 → 没有任何 MySQL 进程在运行,与 Navicat 报错一致。
4.2 第二步:确认 3306 端口是否在监听
netstat-ano|findstr":3306"本次结果:无LISTENING行 → 本机 3306 端口空闲,进一步确认 MySQL 未启动。
若能看到
0.0.0.0:3306 ... LISTENING,说明服务已在跑,应转向检查主机名、防火墙或 Navicat 连接类型是否选错(如误选 PostgreSQL)。
4.3 第三步:命令行能否连接
mysql-u root-proot-e"SHOW DATABASES;"报错前:同样连不上(10061 或类似提示)。
启动 MySQL 后:能列出info_system_demo等库,说明服务端与账号均正常,问题锁定在进程未启动。
4.4 第四步:启动 MySQL(用户模式)
D:\WorkSoftware\MySQL\start-mysql.ps1脚本核心逻辑:若尚无mysqld进程,则后台启动:
Start-Process-FilePath"$mysqlHome\bin\mysqld.exe"`-ArgumentList"--defaults-file=D:/WorkSoftware/MySQL/my.ini"`-WindowStyle Hidden启动后再次检查:
Get-Process-Name"mysqld"netstat-ano|findstr":3306"mysql-u root-proot-e"SHOW DATABASES;"本次结果:
- 出现
mysqld进程; 0.0.0.0:3306 ... LISTENING;- 能正常
SHOW DATABASES。
回到 Navicat重新连接,问题解决。
4.5 排错流程图
Navicat 报 2002/10061 │ ▼ mysqld 进程存在? ──否──► 启动 MySQL(脚本 / 服务 / 手动 mysqld) │是 ▼ 3306 在 LISTENING? ──否──► 查 my.ini 端口、是否被占用 │是 ▼ mysql 命令行能连? ──否──► 查账号、bind-address、防火墙 │是 ▼ 检查 Navicat:主机/端口/连接类型(MySQL)五、Navicat 正确连接配置
| 配置项 | 推荐值 |
|---|---|
| 连接类型 | MySQL(勿选 PostgreSQL / MongoDB) |
| 主机 | localhost或127.0.0.1 |
| 端口 | 3306 |
| 用户名 | root |
| 密码 | 安装时设置的密码(本文示例为root) |
| 数据库 | info_system_demo(可选,连接后再选库也行) |
连接前务必先执行:
D:\WorkSoftware\MySQL\start-mysql.ps1六、安装阶段踩过的坑(顺带记录)
排错过程中,安装环节还遇到过以下问题,一并写入便于检索。
6.1Failed to open required defaults file
现象:
mysqld: [ERROR] Failed to open required defaults file: D:\WorkSoftware\MySQL\my.ini原因:路径写法或文件尚未就绪;MySQL 在 Windows 上对my.ini路径较敏感。
处理:统一使用正斜杠路径,例如:
[mysqld] basedir=D:/WorkSoftware/MySQL/mysql-8.4.10-winx64 datadir=D:/WorkSoftware/MySQL/data port=3306命令行指定:
mysqld--defaults-file=D:/WorkSoftware/MySQL/my.ini--initialize-insecure6.2 注册 Windows 服务被拒绝
现象:Install/Remove of the Service Denied!
原因:非管理员 PowerShell。
处理:
- 方案 A(本次采用):用户模式 +
start-mysql.ps1手动启动; - 方案 B:管理员 PowerShell 执行:
D:\WorkSoftware\MySQL\mysql-8.4.10-winx64\bin\mysqld.exe `--install MySQL84--defaults-file=D:/WorkSoftware/MySQL/my.ini netstartMySQL84注册服务后可开机自启,Navicat 连接更省心。
6.3 导入 SQL 中文乱码 / 字段过长
现象:ERROR 1406: Data too long for column 'dept_name'
原因:source或管道导入时客户端字符集非 UTF-8,中文被错误编码。
处理:
Get-Content"V1__init.sql"-Encoding UTF8|mysql-u root-proot--default-character-set=utf8mb4my.ini中建议:
character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci6.4 MySQL 8.4 配置项变更
MySQL 8.4 已移除default_authentication_plugin,写在my.ini里可能导致初始化异常,需删除该行。
七、日常运维命令速查
# 启动D:\WorkSoftware\MySQL\start-mysql.ps1# 停止D:\WorkSoftware\MySQL\stop-mysql.ps1# 版本mysql--version# 连接mysql-u root-proot# 查看是否在监听netstat-ano|findstr":3306"目录结构参考:
D:\WorkSoftware\MySQL\ ├── mysql-8.4.10-winx64\ # 程序目录 ├── data\ # 数据目录 ├── my.ini # 配置文件 ├── start-mysql.ps1 ├── stop-mysql.ps1 └── README.md八、经验总结
- Navicat 2002 + 10061,优先查 MySQL 有没有启动,不要先改密码。
- ZIP 安装 + 未注册服务= 每次重启电脑后要手动启动,或注册 Windows 服务。
- 排查三板斧:
Get-Process mysqld→netstat :3306→mysql -u root -p。 - Windows 下
my.ini路径推荐正斜杠;导入含中文的 SQL 指定utf8mb4。 - 与 Spring Boot 联调时,保证
application.yml中端口、账号与 Navicat 一致即可。
九、后记
本次问题从 Navicat 一条报错出发,根因却是安装方式带来的「非常驻服务」——配置没有错,只是数据库还没「上班」。这类问题在本地开发、面试练手环境中很常见,把「进程 → 端口 → 客户端」这条链路走通,以后遇到 DataGrip、DBeaver、命令行连接失败,都可以用同一套思路快速定位。
若你希望 MySQL 像商业安装包一样开机自启,建议在管理员 PowerShell中注册MySQL84服务;若保持绿色便携,则养成开 Navicat 前先跑start-mysql.ps1的习惯即可。
参考
- MySQL 8.4 官方文档:Install MySQL on Windows
- 本地练手项目:
info-system-demo(Spring Boot + MyBatis + MySQL)
如果这篇文章对你有帮助,欢迎点赞收藏;有问题欢迎在评论区交流。