DataGrip连接本地数据库报错 nested exception is:java.net.ConnectException: Connection timed out: connect.的解决方案
·
MySQL连接被拒绝?可能是Windows防火墙在作怪!
问题描述
在使用DataGrip连接本地MySQL数据库时,遇到了以下错误:
DBMS: MySQL (no ver.) Case sensitivity: plain=mixed, delimited=exact
Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection timed out: connect.
昨晚弄这个报错弄了一晚上,这个错误让人困惑,因为MySQL服务明明在运行,端口测试也是通的,但就是连接不上。而且你会发现:即使重新安装了MySQL和DataGrip
还是没有任何用。在这里先提前总结一下吧:问题是出现在防火墙。下面我详细说一下
故障现象
- ✅ MySQL服务状态正常
- ✅ 端口测试通过:
Test-NetConnection -ComputerName 127.0.0.1 -Port 3306显示成功 - ✅ 进程确认:
mysqld.exe在正常运行 - ❌ DataGrip连接持续超时
排查过程
1. 基础服务检查
# 检查MySQL服务状态
sc query MySQL80
# 检查端口占用
netstat -ano | findstr :3306
# 检查MySQL进程
tasklist | findstr mysqld.exe
2. 网络连通性测试
# PowerShell测试端口
Test-NetConnection -ComputerName 127.0.0.1 -Port 3306
结果显示:
ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 3306
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : True
3. DataGrip配置尝试
尝试了各种配置组合:
- 使用
127.0.0.1和localhost - 添加Advanced参数:
useSSL=false allowPublicKeyRetrieval=true serverTimezone=UTC - 更换JDBC驱动版本
- 重新安装DataGrip
- 重新安装MySQL
根本原因发现
经过系统排查,发现问题在于Windows防火墙阻止了JDBC连接。
虽然命令行工具和PowerShell可以连接,但Java应用程序(包括DataGrip)的网络连接被防火墙拦截。
解决方案
方案一:临时测试(确认问题)
# 临时关闭防火墙测试
netsh advfirewall set allprofiles state off
# 测试DataGrip连接,如果成功连接就可以确定问题是出在防火墙了
# 测试完成后重新开启防火墙
netsh advfirewall set allprofiles state on
方案二:永久解决方案(推荐)
添加防火墙规则允许MySQL端口:
# 以管理员身份运行命令提示符
# 为MySQL主端口3306添加规则
netsh advfirewall firewall add rule name="MySQL Server 3306" dir=in action=allow protocol=TCP localport=3306
# 为MySQL X Plugin端口33060添加规则
netsh advfirewall firewall add rule name="MySQL X Plugin 33060" dir=in action=allow protocol=TCP localport=33060
# 验证规则添加成功
netsh advfirewall firewall show rule name="MySQL Server 3306"
方案三:通过图形界面设置
- 打开"控制面板" → “Windows Defender 防火墙”
- 点击"允许应用或功能通过Windows Defender防火墙"
- 找到"MySQL Server"并勾选,或点击"允许其他应用"添加
mysqld.exe
验证解决
添加防火墙规则后,在防火墙开启状态下测试DataGrip连接,应该能够正常连接。
# 最终验证
Test-NetConnection -ComputerName 127.0.0.1 -Port 3306
经验总结
- 不要忽视防火墙:即使连接本地服务,Windows防火墙也可能拦截Java应用程序的连接
- 分层排查:从服务状态→网络连通性→应用程序配置的系统化排查方法
- 临时测试很重要:临时关闭防火墙可以帮助快速确认问题根源
- 生产环境安全:在生产环境中,应该使用精确的防火墙规则而不是完全关闭防火墙
相关命令参考
# 检查防火墙状态
netsh advfirewall show allprofiles
# 查看所有防火墙规则
netsh advfirewall firewall show rule name=all
# 删除防火墙规则
netsh advfirewall firewall delete rule name="规则名称"
这个问题的排查过程提醒我们:有时候最简单的因素(如防火墙)往往是最容易被忽略的故障点。如果早点发现问题出在防火墙就不会浪费一晚上了哈哈哈哈(欲哭无泪)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)