MacOS Monterey下运行mongosh遇ECONNREFUSED连接错误求助
解决MacOS Monterey下MongoDB Community连接被拒绝(ECONNREFUSED)的问题
核心问题定位
从你提供的mongod日志来看,Asio socket.set_option failed with std::system_error(错误信息为acceptor TCP fast open: Invalid argument)是导致连接失败的关键原因——MongoDB尝试启用TCP Fast Open时与MacOS Monterey系统不兼容,导致服务无法正常监听27017端口,最终触发MongoNetworkError: connect ECONNREFUSED。
解决方案步骤
1. 禁用TCP Fast Open
修改MongoDB配置文件/usr/local/etc/mongod.conf,在net节点下添加禁用TCP Fast Open的配置:
systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1 tcpFastOpenDisabled: true # 添加这行禁用TCP Fast Open
保存配置后重启MongoDB服务:
brew services restart mongodb/brew/mongodb-community
2. 验证服务状态
执行以下命令检查27017端口是否被mongod进程占用:
lsof -i :27017
如果输出中出现mongod相关进程,说明服务已正常监听端口,此时再尝试mongosh连接即可。
3. 排查数据目录权限(可选)
若重启后仍无法启动,检查MongoDB数据目录的权限是否正确:
ls -ld /usr/local/var/mongodb
确保当前用户拥有该目录的读写权限,若权限不足,执行:
sudo chown -R $(whoami) /usr/local/var/mongodb
4. 手动启动排查详细错误(可选)
如果brew services提示启动成功但实际服务未运行,手动启动mongod并查看实时日志:
mongod --config /usr/local/etc/mongod.conf
根据输出的完整日志排查是否存在其他启动障碍。
内容的提问来源于stack exchange,提问作者Jcurrr0
相关产品推荐
相关产品推荐

