Windows虚拟机连接Mac主机MongoDB 4.4报5000ms连接超时如何解决
故障环境
- 主机:搭载Mac OS Monterey 12.4版本的Mac设备,部署MongoDB 4.4.14
- 虚拟机:Parallels运行的Windows系统,安装Studio 3T客户端
故障现象
- Mac本地连接正常:本机Robo 3T可正常连接MongoDB,
mongocli连接127.0.0.1:27017正常,返回信息如下:
$ mongo MongoDB shell version v4.4.14 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("ab8018b3-c4f2-4236-8c3b-abef5468bb03") } MongoDB server version: 4.4.14 --- The server generated these startup warnings when booting: 2022-06-02T15:59:13.574+05:30: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted --- MongoDB Enterprise >
- 虚拟机连接异常:Windows虚拟机中通过Studio 3T连接Mac主机IP 192.168.1.2的27017端口MongoDB服务时连接失败,报错等待连接5000ms后超时,错误详情如下:
Connection failed. SERVER [192.168.1.2:27017] (Type: UNKNOWN) CONNECTING Details: Timed out after 5000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=192.168.1.2:27017, type=UNKNOWN, state=CONNECTING}]}
- 基础连通性验证:Windows虚拟机ping 192.168.1.2连通性正常,已关闭Windows系统防火墙,ping测试结果如下:
C:\Windows\system32>ping 192.168.1.2 Pinging 192.168.1.2 with 32 bytes of data: Reply from 192.168.1.2: bytes=32 time<1ms TTL=64 Reply from 192.168.1.2: bytes=32 time<1ms TTL=64 Reply from 192.168.1.2: bytes=32 time<1ms TTL=64 Reply from 192.168.1.2: bytes=32 time<1ms TTL=64 Ping statistics for 192.168.1.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\Windows\system32>
解决方法
ping通但端口连接超时,本质是27017端口未对虚拟机网段开放,按以下顺序排查修复:
- 修正MongoDB监听地址
MongoDB默认仅绑定本地回环地址127.0.0.1,外部设备无法访问,需要修改配置:
- 找到MongoDB配置文件:Intel芯片Mac路径为
/usr/local/etc/mongod.conf,M系列芯片Mac路径为/opt/homebrew/etc/mongod.conf - 找到
net配置段,将bindIp参数从默认的127.0.0.1修改为0.0.0.0(监听所有网卡),配置示例:
net: port: 27017 bindIp: 0.0.0.0
注意yaml格式要求缩进为2个空格,不能用Tab键,否则配置加载失败
- 保存配置后重启MongoDB服务,brew安装版本执行命令:
brew services restart mongodb-community@4.4 - 验证监听状态:Mac终端执行
lsof -i :27017,如果返回结果中存在*:27017的监听项,说明配置生效;如果仍只有127.0.0.1:27017,检查配置文件路径、格式是否正确。
- 放行Mac防火墙对27017端口的拦截
Mac系统默认防火墙会拦截外部设备对本地端口的入站访问:
- 打开「系统设置>网络>防火墙」,临时关闭防火墙后在虚拟机测试连接,如果能连通说明是防火墙规则问题
- 不需要关闭防火墙的场景下,点击防火墙的「选项」按钮,点「+」号添加mongod进程(brew安装的默认路径为
/usr/local/Cellar/mongodb-community@4.4/4.4.14/bin/mongod,M芯片对应/opt/homebrew下的同路径),将该进程的权限设置为「允许传入连接」即可。
- 检查Parallels网络配置
- 打开Parallels对应虚拟机的「配置>硬件>网络」,将网络源设置为「共享网络」或「桥接网络-默认适配器」,不要选择「仅主机」模式
- 进入Parallels全局设置>安全,取消勾选「隔离虚拟机与主机」类的网络隔离选项。
连通性验证
配置完成后,先在Windows端验证端口是否打通,不需要直接开Studio 3T测试:
- 打开PowerShell执行命令:
Test-NetConnection 192.168.1.2 -Port 27017,如果返回结果中TcpTestSucceeded为True,说明端口连通正常 - 端口通了之后再打开Studio 3T连接即可正常访问。
额外提示:当前MongoDB未开启权限认证,局域网内所有设备都可以无限制读写数据,连通后建议尽快创建账号开启访问控制。
内容的提问来源于stack exchange,提问作者Hitesh
相关产品推荐
相关产品推荐

