Navicat通过SSH隧道连接MySQL时,常规页主机必须填127.0.0.1、端口填MySQL监听端口、用户名密码为MySQL账号;SSH页填服务器系统账号信息,且MySQL需监听127.0.0.1,用户权限须明确授权给127.0.0.1或跳板机内网IP。

直接暴露 3306 端口到公网等于把数据库钥匙挂在门口——SSH隧道是唯一不需要改MySQL配置、不依赖SSL证书、还能复用现有SSH权限的安全解法。
为什么本地连不上 127.0.0.1:3306?
很多人填了 127.0.0.1 和 3306 就点测试,结果报错 Can't connect to MySQL server on '127.0.0.1'。这不是Navicat的问题,而是你还没真正建立隧道。
- Navicat 的 SSH 隧道是“按需启动”:只有双击连接时才建隧道,不是配置完就自动跑
- 如果你在“常规”选项卡里填的是
127.0.0.1:3306,但没在“SSH”选项卡勾选“使用SSH隧道”,Navicat 就会直连本地,当然失败 - MySQL 服务端必须监听
127.0.0.1:3306(不是0.0.0.0:3306),否则远程转发过来的流量进不去 - 检查命令行能否手动连通:执行
ssh user@host -p 22成功,才说明基础链路没问题
Navicat 里填错这三项,90% 连接失败
填错任意一项都会卡在“测试连接”或双击后转圈不动,且错误提示含糊。
-
SSH 主机名/IP地址:必须填服务器公网 IP 或域名,不是localhost或内网地址 -
SSH 端口:默认是22,但如果运维改过(比如设成2222),这里必须同步改,不能猜 -
MySQL 主机名/IP地址:在“常规”选项卡里,这里必须填127.0.0.1(不是服务器内网IP,也不是localhost),因为隧道已把远程3306映射到本地回环
密钥登录比密码登录更安全,但容易卡在这三步
密钥方式能防暴力破解,但 Navicat 对私钥格式很挑剔,稍有不对就静默失败。
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- 私钥文件必须是 OpenSSH 格式(
-----BEGIN RSA PRIVATE KEY-----开头),PuTTY 的.ppk文件不兼容,得用 PuTTYgen 转成 OpenSSH - 私钥文件路径不能含中文或空格,最好拖进 Navicat 界面自动填充,别手输
- 如果私钥设置了密码(passphrase),Navicat 会弹窗要你输——这个弹窗有时被藏在后台,注意任务栏闪烁
隧道建好了,但查询慢或中断?查这几个点
SSH 隧道本身不卡,但配置不当会让连接变得脆弱。
- Navicat 默认不保活,闲置 5 分钟可能断开;在 SSH 选项卡勾选“保持连接活跃”,或服务器端
/etc/ssh/sshd_config加ClientAliveInterval 60 - 别在“常规”选项卡里填超长
连接名,某些旧版 Navicat(如 15.0.24)对 Unicode 名称解析异常,导致隧道启动失败 - 如果远程 MySQL 启用了
skip-name-resolve,确保 Navicat “常规”选项卡里的用户名对应的是user@'127.0.0.1',而不是user@'%'或user@'localhost'
真正麻烦的从来不是建隧道,而是 MySQL 用户权限绑定在 localhost 却误以为 127.0.0.1 等价——这两个在 MySQL 权限体系里是不同 host,差一个点就查不到表。










