连接失败通常与服务状态、配置文件、网络/防火墙、认证权限或日志错误相关,以下是逐步排查方案:
确保MongoDB服务(mongod
)已启动并正常运行。使用以下命令查看状态:
sudo systemctl status mongod
若服务未启动,执行以下命令启动并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
配置文件的错误设置是连接失败的常见原因,重点检查以下参数:
0.0.0.0
(允许所有IP)或指定服务器IP;默认127.0.0.1
仅允许本地连接。27017
,确保未被占用或修改。sudo systemctl restart mongod
CentOS防火墙(firewalld
)可能阻止外部访问MongoDB端口(27017)。执行以下命令开放端口:
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent # 永久添加规则
sudo firewall-cmd --reload # 重新加载防火墙配置
使用ping
命令检查客户端与服务器的网络连通性:
ping <服务器IP>
使用telnet
或nc
命令测试MongoDB端口是否可达:
telnet <服务器IP> 27017
# 或
nc -vz <服务器IP> 27017
若无法连通,需排查网络问题(如路由器设置、云服务器安全组)。
若启用了MongoDB认证(security.authorization: enabled
),需使用正确的用户名、密码及认证数据库连接。
mongo
use admin
db.createUser({
user: "myUser",
pwd: "myPassword",
roles: [{ role: "readWrite", db: "myDatabase" }]
})
exit
mongo --host <服务器IP> --port 27017 -u myUser -p myPassword --authenticationDatabase admin
日志文件(通常位于/var/log/mongodb/mongod.log
)包含详细的错误信息,使用以下命令实时查看日志:
sudo tail -f /var/log/mongodb/mongod.log
常见日志错误及解决方向:
mongod.conf
中的port
或停止占用进程。chown -R mongod:mongod /var/lib/mongo
)。若启用了SELinux,可能阻止MongoDB访问网络或文件。临时关闭SELinux进行测试:
sudo setenforce 0
若问题解决,可修改SELinux策略或永久关闭(需谨慎,影响系统安全)。
若使用编程语言(如PHP、Python)连接MongoDB,确保驱动程序版本与MongoDB服务器版本兼容。例如,MongoDB 6.0及以上版本需要对应版本的驱动程序。
通过以上步骤逐一排查,多数连接问题均可解决。若仍无法解决,建议根据日志中的具体错误信息进一步分析,或参考MongoDB官方文档获取支持。