Navicat 15连接超时本质是TCP空闲断连,主因在SSH隧道、云NAT网关或防火墙等中间层主动回收无数据连接;需同步配置SSH心跳(ServerAliveInterval)、数据库wait_timeout及云平台连接空闲超时。
Navicat 15 连接超时本质是 TCP 空闲断连,不是“卡死”
navicat 15 导入大批量 sql 时提示“connection timeout”或中途断开,多数情况并非数据库没响应,而是中间链路(尤其是经 ssh 隧道或代理时)主动关闭了空闲连接。mysql 或 postgresql 服务本身可能仍在运行,但 ssh 客户端、跳板机、防火墙或云厂商的 nat 网关在无数据交互数秒后就回收了连接。此时 wait_timeout 和 interactive_timeout 调得再大也无效——连接早在抵达数据库前就被掐断了。
SSH 隧道场景:必须同时调两端的心跳
如果你通过 SSH 隧道连接数据库(例如 Navicat 中勾选了“使用 SSH 隧道”),超时控制权不在 Navicat 或 MySQL,而在 SSH 协议栈。只改 Navicat 的“保持连接间隔”或数据库的 wait_timeout 没用。
- 在 Navicat 的 SSH 配置页,启用
Keep alive并设为30秒(或更低,如15);该选项实际发送 SSH-level 的ServerAliveInterval - 在 SSH 服务器(跳板机或目标服务器)的
/etc/ssh/sshd_config中,确保有:ClientAliveInterval 30ClientAliveCountMax 3(即 90 秒无响应才断) - 修改后需执行
sudo systemctl restart sshd生效 - 若用私钥登录且客户端是 OpenSSH,也可在本地
~/.ssh/config中为对应 Host 添加:ServerAliveInterval 30ServerAliveCountMax 3
直连 MySQL/PostgreSQL 时:wait_timeout 仍需同步调高
即使不走 SSH,大批量导入过程中客户端长时间无 query(比如解析大文件、构建 INSERT 批次),MySQL 默认的 wait_timeout=28800(8 小时)看似够用,但 Navicat 自身的连接管理器可能更激进。关键点在于:这个值只对已建立的连接生效,且需在连接创建前设置。
- 不要依赖 Navicat “高级”页里的“连接超时”字段——它仅控制建连阶段,不影响已连状态下的空闲断连
- 登录 MySQL 后立即执行:
SET SESSION wait_timeout = 28800000;(3 小时,单位毫秒) - 更稳妥的做法是全局修改(需 SUPER 权限):
SET GLOBAL wait_timeout = 28800000;SET GLOBAL interactive_timeout = 28800000; - 注意:MySQL 8.0+ 中
max_allowed_packet若小于待导入语句长度(如单条百万行 INSERT),也会触发类似超时的中断,务必一并检查并设为1073741824(1G)
容易被忽略的中间层:云防火墙与 NAT 超时
在阿里云、腾讯云、AWS 等环境,即使 SSH 和数据库配置都正确,NAT 网关或安全组背后的连接跟踪(conntrack)默认超时往往只有 60–300 秒。Navicat 一次导入耗时超过这个阈值,连接就会被静默丢弃,现象仍是“timeout”。
- 阿里云 ECS:进入安全组规则 → 查看“出方向”和“入方向”规则的“连接空闲超时时间”,改为
3600秒(1 小时)以上 - AWS EC2:检查 Network ACL 和 Security Group 关联的 VPC Flow Logs,确认无 reject 记录;重点排查
connection idle timeout设置(Classic Load Balancer 默认 60 秒,ALB 可设至 4000 秒) - 本地 Windows 防火墙:有时会启用“TCP 连接空闲超时”,注册表路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下的KeepAliveTime默认为 7200000(2 小时),但若被策略覆盖成 300000(5 分钟),就必然中断
这类中间层超时最难定位,因为它不报错、不写日志,只让 Navicat 停在“正在连接…”或突然断开。最简验证方式:导入前,在终端持续执行 ping -t your-db-ip(Windows)或 ping your-db-ip(macOS/Linux),观察是否在导入卡住时刻同步失联。











