navicat 不能直连 jumpserver 后端 mysql,除非启用 magnus 组件(v2.21.0+)作为数据库代理网关;默认 jumpserver 仅支持 ssh/telnet/rdp 协议,不转发数据库协议,其“数据库资产”仅为记录项,点击“启动终端”进入的是 ssh shell 而非数据库连接通道。
navicat 不能直接通过 jumpserver 的 web 界面或普通 ssh 隧道连接后端数据库——除非 jumpserver 启用了 magnus 组件(v2.21.0+),且管理员已将其配置为数据库代理网关。
JumpServer 没开 Magnus,Navicat 连不上 MySQL
默认安装的 JumpServer(包括 v4.x)只提供 SSH/Telnet/RDP 资产代理,不转发数据库协议。你看到的“数据库资产”在 JumpServer 管理后台里只是个记录项,点击“启动终端”进的是 SSH shell,不是直连 MySQL 的通道。
此时你在 Navicat 里填目标库 IP、端口、账号,再配 JumpServer 的 SSH 参数(主机/IP、22 端口、跳板机用户密码),一定会失败,报错通常是:
-
Connection refused(目标库端口未监听在 JumpServer 上) -
Access denied for user(Navicat 实际连的是 JumpServer 本机的 MySQL,而非后端库) -
SSH tunnel failed to establish(JumpServer 未开放 SSH 端口给客户端直连,或防火墙拦截)
必须启用 Magnus 才能 Navicat 直连
Magnus 是 JumpServer 的独立数据库代理组件,用 Go 编写,专门把 MySQL/MariaDB/PostgreSQL 协议流量从 JumpServer 转发到后端真实数据库。它不依赖 SSH 隧道,而是作为 TCP 代理运行。
确认是否启用 Magnus:
- 管理员需在 JumpServer 系统设置 → 终端设置 → 服务端点中,确认
magnus服务已部署并启用 - 资产详情页里,“数据库类型”旁应显示
DB Client连接方式可选(不是只有“Web Terminal”) - 点击资产后的“DB Client”,应弹出类似
mysql -h 192.168.10.5 -P 3307 -u jumpuser -p的命令行信息,其中-h地址和-P端口是 Magnus 暴露给外网的地址/端口,不是后端库的真实地址
这时你才能在 Navicat 中填入这个 192.168.10.5 和 3307,用户名密码用 JumpServer 分配的数据库账号(如 jumpuser),不勾选 SSH 通道——因为 Magnus 已经完成了协议代理和权限校验。
Navicat 连接参数必须严格匹配 Magnus 分配的值
Magnus 不会复用 JumpServer 的 SSH 用户或数据库原始连接信息。它对外暴露的是新端口、新访问控制策略,且通常做了源 IP 白名单、连接数限制、SQL 审计等加固。
常见踩坑点:
- 误填后端库真实 IP 和 3306 端口 → 必须填 Magnus 提供的代理地址和端口(如
3307或23306) - 用 JumpServer 登录账号(如
admin)当数据库账号 → 必须用 Magnus 授权过的数据库账号(如jumpuser@'%') - 本地网络无法访问 Magnus 监听地址 → Magnus 默认只监听内网或特定网卡,需管理员检查
magnus.yml中的bind_host和防火墙策略 - Navicat 版本太老(如 12.x 以下)不支持 TLS 1.2+ → Magnus 默认强制加密,低版本 Navicat 会握手失败,报错
SSL connection error
没有 Magnus?只能走 Web Terminal 或本地跳板
如果 JumpServer 未启用 Magnus,又没条件推动运维开通,就别在 Navicat 里硬试 SSH 隧道了——它根本不是设计用来干这个的。
可行替代方案只有两个:
- 用 JumpServer Web Terminal 进入 SSH shell,再敲
mysql -u xxx -p -h 10.0.1.20手动操作(适合临时查数据,不适合建表/导数据) - 在本地机器上用 OpenSSH 建立多级隧道:
ssh -L 3307:10.0.1.20:3306 jumpuser@jumper.example.com,然后 Navicat 连127.0.0.1:3307(前提是 JumpServer 允许 SSH 端口映射,且管理员没禁用AllowTcpForwarding)
后者看似绕,但比折腾 Navicat 的 SSH 设置更可控;前者最省事,但所有操作都留在 JumpServer 审计日志里,没法用 Navicat 的可视化功能。











