摘要 :本文记录 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,双击连接时报错:
text
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 执行:
powershell
Get-Process -Name "mysqld" -ErrorAction SilentlyContinue
本次结果:无输出 → 没有任何 MySQL 进程在运行,与 Navicat 报错一致。
4.2 第二步:确认 3306 端口是否在监听
powershell
netstat -ano | findstr ":3306"
本次结果 :无 LISTENING 行 → 本机 3306 端口空闲,进一步确认 MySQL 未启动。
若能看到
0.0.0.0:3306 ... LISTENING,说明服务已在跑,应转向检查主机名、防火墙或 Navicat 连接类型是否选错(如误选 PostgreSQL)。
4.3 第三步:命令行能否连接
powershell
mysql -u root -proot -e "SHOW DATABASES;"
报错前:同样连不上(10061 或类似提示)。
启动 MySQL 后 :能列出 info_system_demo 等库,说明服务端与账号均正常,问题锁定在 进程未启动。
4.4 第四步:启动 MySQL(用户模式)
powershell
D:\WorkSoftware\MySQL\start-mysql.ps1
脚本核心逻辑:若尚无 mysqld 进程,则后台启动:
powershell
Start-Process -FilePath "$mysqlHome\bin\mysqld.exe" `
-ArgumentList "--defaults-file=D:/WorkSoftware/MySQL/my.ini" `
-WindowStyle Hidden
启动后再次检查:
powershell
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 排错流程图
text
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(可选,连接后再选库也行) |
连接前务必先执行:
powershell
D:\WorkSoftware\MySQL\start-mysql.ps1
六、安装阶段踩过的坑(顺带记录)
排错过程中,安装环节还遇到过以下问题,一并写入便于检索。
6.1 Failed to open required defaults file
现象:
text
mysqld: [ERROR] Failed to open required defaults file: D:\WorkSoftware\MySQL\my.ini
原因 :路径写法或文件尚未就绪;MySQL 在 Windows 上对 my.ini 路径较敏感。
处理:统一使用正斜杠路径,例如:
ini
[mysqld]
basedir=D:/WorkSoftware/MySQL/mysql-8.4.10-winx64
datadir=D:/WorkSoftware/MySQL/data
port=3306
命令行指定:
powershell
mysqld --defaults-file=D:/WorkSoftware/MySQL/my.ini --initialize-insecure
6.2 注册 Windows 服务被拒绝
现象 :Install/Remove of the Service Denied!
原因:非管理员 PowerShell。
处理:
- 方案 A(本次采用):用户模式 +
start-mysql.ps1手动启动; - 方案 B:管理员 PowerShell 执行:
powershell
D:\WorkSoftware\MySQL\mysql-8.4.10-winx64\bin\mysqld.exe `
--install MySQL84 --defaults-file=D:/WorkSoftware/MySQL/my.ini
net start MySQL84
注册服务后可开机自启,Navicat 连接更省心。
6.3 导入 SQL 中文乱码 / 字段过长
现象 :ERROR 1406: Data too long for column 'dept_name'
原因 :source 或管道导入时客户端字符集非 UTF-8,中文被错误编码。
处理:
powershell
Get-Content "V1__init.sql" -Encoding UTF8 |
mysql -u root -proot --default-character-set=utf8mb4
my.ini 中建议:
ini
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
6.4 MySQL 8.4 配置项变更
MySQL 8.4 已移除 default_authentication_plugin,写在 my.ini 里可能导致初始化异常,需删除该行。
七、日常运维命令速查
powershell
# 启动
D:\WorkSoftware\MySQL\start-mysql.ps1
# 停止
D:\WorkSoftware\MySQL\stop-mysql.ps1
# 版本
mysql --version
# 连接
mysql -u root -proot
# 查看是否在监听
netstat -ano | findstr ":3306"
目录结构参考:
text
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)
如果这篇文章对你有帮助,欢迎点赞收藏;有问题欢迎在评论区交流。