有时候用 Navicat 管理 MongoDB,会弹出这样一条错误提示:
Cannot connect to MongoDB.
Server at localhost:27017 reports wire version 5, but this version of libmongoc requires at least 6 (MongoDB 3.6)
这句话的意思很直接:
MongoDB 服务器自报的 wire version = 5,而 Navicat 内置的 MongoDB 驱动(libmongoc)要求 wire version ≥ 6,也就是至少要 MongoDB 3.6 以上版本。
换句话说:Navicat 太新、MongoDB 太旧,两边不兼容。
一、先确认当前 MongoDB 版本(实测步骤)
不管是哪台服务器,先把 MongoDB 的真实版本确认出来。
- 在服务器上打开命令行(Windows 下是 CMD 或 PowerShell,Linux 下是终端)。
- 执行:
mongo --version或进入 Mongo Shell 后执行:
db.version() - 如果看到类似
3.2.x、3.4.x这样的版本号,就能对应上错误里的wire version 5。- 3.2 / 3.4:wire version=5
- 3.6 及以上:wire version≥6
在一套实测环境里(Windows Server + MongoDB 3.4 + Navicat 16),执行 mongo --version 得到的是 3.4.x,对应的 wire version 正好是 5,因此 Navicat 无法建立连接。
二、方案一:升级 MongoDB 到 3.6+(官方推荐做法)
如果这台 MongoDB 只用于内部开发或测试,升级到 3.6 以上是最省心的方案。思路是:保留数据 → 安装新版本 → 使用原有数据目录启动。
下面以常见的两种环境做一个简要说明:
1. Windows 环境升级思路
- 停止 MongoDB 服务:
services.msc中找到 MongoDB 服务,点“停止”;
- 备份数据目录和配置文件
mongod.cfg; - 从官方或镜像站下载 MongoDB 4.0 / 4.2 安装包;
- 安装时选择“使用已有数据目录”(或安装完成后手动修改
mongod.cfg的dbPath); - 启动服务,重新执行
mongo --version确认版本。
实测中,从 3.4 升到 4.0 后,再用 Navicat 16 连接,就不再出现 wire version 相关的报错。
2. Linux 环境升级思路(以 yum 为例)
sudo systemctl stop mongod
# 更新源并安装新版本
sudo yum install -y mongodb-org-4.0
sudo systemctl start mongod
mongo --version
数据目录如果沿用原来的路径,升级完成后 Navicat 也能直接连上。
注意:
生产环境升级前一定要先做完整备份,最好在测试环境先跑一遍升级流程。
三、方案二:换用旧版本 Navicat(兼容旧 MongoDB)
如果 MongoDB 版本不方便动(例如老项目、第三方系统),那就只能反其道而行——选一个支持旧版 MongoDB 的 Navicat 版本。
实测过程中,Navicat 早期版本(例如部分 11/12 系列)仍可正常连接 MongoDB 3.2/3.4,不会要求 wire version≥6。
参考操作思路:
- 保留当前 Navicat 安装包,以免需要回滚;
- 卸载新版 Navicat;
- 安装较老版本(要确认其官方说明里支持 MongoDB 3.2/3.4);
- 重新配置 MongoDB 连接,使用同样的 IP、端口和账号。
这种方式不用动服务器,只是在本机换一个工具版本,对于不能动线上环境的情况比较友好。
四、方案三:临时用 mongosh / Robo 之类的客户端
如果只是临时查看或修改数据,也可以绕过 Navicat,选用其他兼容旧版 MongoDB 的客户端工具,例如:
- 官方提供的
mongo/mongosh; - Robo 3T(旧版对 3.4 支持比较好);
- 其他社区工具。
这种方式无需变更数据库版本,只是操作体验和 Navicat 不太一样,更适合临时应急。
五、排查时可以顺手检查的几项
在处理 “wire version” 报错时,顺便可以检查这些配置,减少后续问题:
- 端口是否正确:默认 27017,有的环境会自定义端口。
- 绑定地址:
bindIp是否只绑定了 127.0.0.1,外网连接时需要增加服务器 IP。 - 认证方式:是否开启了授权(auth),账号密码是否正确。
- 防火墙:服务器防火墙或云厂商安全组是否放行对应端口。
这些问题并不会导致上面这条特定错误,但处理连接问题时可以一并确认。
相关文章:
下载地址:
