答案是必须在Windows防火墙中创建启用的入站规则放行3306端口:打开高级安全设置→入站规则→新建规则→选端口→TCP协议→填3306→允许连接→勾选域/专用/公用网络→命名完成,并确认规则已启用。
Windows防火墙没放行3306端口,Navicat连不上
navicat连接mysql失败,90%以上是windows防火墙拦住了入站的3306(或自定义)端口。不是“可能”,而是大概率就是它——哪怕mysql服务正常、账号权限已开、ip和端口都填对了。
怎么在Windows防火墙里加一条入站规则
别去关整个防火墙,直接精准放行端口更安全。步骤很固定,但每一步漏掉都会失败:
- 打开「控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置」
- 左侧点「入站规则」,右侧点「新建规则…」
- 规则类型选「端口」→ 下一步
- 协议选「TCP」,特定本地端口填
3306(如果是PostgreSQL填5432,Oracle填1521)→ 下一步 - 操作选「允许连接」→ 下一步
- 配置文件勾选「域」「专用」「公用」(尤其别漏「公用」,虚拟机桥接或局域网环境必须勾)→ 下一步
- 名称随便写,比如
Allow MySQL 3306→ 完成
常见错误现象和对应检查点
加完规则还是连不上?先看这几个最常踩的坑:
-
防火墙规则没生效:重启Navicat或重试连接前,确认规则状态是「启用」(右键规则 → 属性 → 常规页里「启用此规则」要打勾) -
填错端口号:MySQL实际监听的端口未必是3306,进MySQL执行show global variables like 'port';确认;PostgreSQL查postgresql.conf里的port值 -
规则只放行了TCP,但服务用UDP:MySQL/PostgreSQL/Oracle全走TCP,UDP不用管;但若你改过配置或用了特殊代理,得核对协议 -
Windows防火墙开着,但第三方杀毒软件也带防火墙:比如360、腾讯电脑管家,它们会劫持网络策略,得进各自设置里单独放行navicat.exe或对应端口
为什么不能直接关防火墙
临时关防火墙能连上,但等于把大门敞开。真实生产环境或公司内网,关防火墙会被安全策略拦截,甚至触发告警。而且关了之后,下次重启系统或策略更新,又得重来——不如一次配准端口规则,一劳永逸。
真正容易被忽略的是「公用网络」这个配置项,很多人只勾了「专用」,结果虚拟机用桥接模式或手机热点连PC时,连接就静默失败。











