【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,双击连接时报错:

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 服务。原因如下:

  1. 使用 cdn.mysql.com 下载 mysql-8.4.10-winx64.zip 解压到 D:\WorkSoftware\MySQL\
  2. 编写 my.ini,执行 mysqld --initialize-insecure 初始化数据目录。
  3. 尝试 mysqld --install 注册服务时提示 Install/Remove of the Service Denied(当前 PowerShell 无管理员权限)。
  4. 改为 用户模式 :通过 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)
主机 localhost127.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

八、经验总结

  1. Navicat 2002 + 10061,优先查 MySQL 有没有启动,不要先改密码。
  2. ZIP 安装 + 未注册服务 = 每次重启电脑后要手动启动,或注册 Windows 服务。
  3. 排查三板斧:Get-Process mysqldnetstat :3306mysql -u root -p
  4. Windows 下 my.ini 路径推荐 正斜杠 ;导入含中文的 SQL 指定 utf8mb4
  5. 与 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)

如果这篇文章对你有帮助,欢迎点赞收藏;有问题欢迎在评论区交流。

相关推荐
FreeBuf_8 小时前
Windows NT OS内核提权漏洞PoC已公开
windows
雲帝9 小时前
Windows虚拟机UDP大包分片排障
windows·网络协议·udp
寒水馨10 小时前
Windows下载、安装scrcpy-v4.1(附安装包scrcpy-win64-v4.1.zip)
windows·scrcpy·投屏工具·安卓投屏·usb调试·android投屏·屏幕镜像
神仙别闹11 小时前
基于QT(C++)实现Windows 自启动项查看和分析
c++·windows·qt
寒水馨11 小时前
macOS下载、安装scrcpy-v4.1(附安装包scrcpy-macos-aarch64-v4.1.tar.gz)
macos·adb·手机控制·scrcpy·投屏软件·android投屏·屏幕镜像
—Miss. Z—12 小时前
计算机二级MySQL——简单应用题(事件&视图)
android·mysql·adb
会编程的土豆13 小时前
MySQL 中的 IN 和 EXISTS(零基础笔记)
数据库·笔记·mysql
AAA@峥14 小时前
系统化学习 MySQL:数据类型、库表管理、增删改查全解析
数据库·学习·mysql
love530love21 小时前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw
二宝哥1 天前
MySQL 修改密码策略详解:从基础到高级配置
mysql·密码学