首先确认MongoDB服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mongod
如果服务未运行(显示“inactive”或“failed”),尝试启动服务:
sudo systemctl start mongod
若需设置开机自启动,执行:
sudo systemctl enable mongod
注意:部分旧版本Ubuntu可能使用mongodb作为服务名,若mongod不存在,可替换为mongodb。
日志文件是故障排查的核心依据,Ubuntu上MongoDB默认日志路径为/var/log/mongodb/mongod.log。使用以下命令实时查看日志尾部内容(快速定位错误):
sudo tail -f /var/log/mongodb/mongod.log
重点关注“ERROR”“FAILED”等关键字,日志会明确提示故障原因(如配置错误、权限问题、端口冲突等)。
MongoDB的主配置文件通常位于/etc/mongod.conf,需检查以下关键配置项:
bindIp:确保允许访问的IP地址(本地测试可设为127.0.0.1,远程访问需设为0.0.0.0);port:默认端口为27017,确保未被其他进程占用;dbPath:数据存储目录(如/var/lib/mongodb)是否存在;logPath:日志目录是否存在且有写入权限。sudo systemctl restart mongod
可使用以下命令快速检查配置文件语法:
mongod --config /etc/mongod.conf --eval
若语法错误,命令会返回具体提示。
MongoDB需要对其数据目录(dbPath)有读写权限,否则会无法启动。默认数据目录为/var/lib/mongodb,执行以下命令修复权限:
sudo chown -R mongodb:mongodb /var/lib/mongodb # 将所有者改为mongodb用户
sudo chmod -R 0755 /var/lib/mongodb # 设置目录权限
若数据目录被误删或损坏,需重新创建并设置权限:
sudo mkdir -p /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb
MongoDB默认使用27017端口,若该端口被其他进程占用,会导致服务无法启动。使用以下命令检查端口占用情况:
sudo netstat -tulnp | grep 27017
若输出中显示其他进程(如nginx、apache)占用了该端口,需停止该进程或修改MongoDB的port配置(如改为27018)。
若出现“Connection refused”错误,需依次检查以下内容:
systemctl status mongod确认;bindIp:确保允许远程访问(设为0.0.0.0);ufw防火墙,允许27017端口通过:sudo ufw allow 27017
security.authorization: enabled,需使用正确的用户名和密码连接(如mongo -u admin -p --authenticationDatabase admin)。若MongoDB无法启动且日志提示“Corrupted data files”或“Lock file exists”,需使用--repair参数修复数据文件:
sudo mongod -f /etc/mongod.conf --repair
修复完成后,重新启动服务即可。注意:修复前建议备份数据目录(/var/lib/mongodb)。
磁盘空间不足或内存耗尽会导致MongoDB无法启动或性能下降。使用以下命令检查系统资源:
df -h # 查看磁盘使用情况(重点关注根分区“/”)
free -m # 查看内存使用情况
iostat -x 1 # 查看磁盘I/O负载(需安装sysstat包)
若磁盘空间不足,清理不必要的文件(如/var/log/journal日志):
sudo journalctl --vacuum-time=1w # 清理1周前的日志
sudo rm -rf /var/log/*.gz # 删除压缩的旧日志
通过以上步骤,可覆盖Ubuntu上MongoDB的常见故障场景。若问题仍未解决,建议根据日志中的具体错误信息,查阅MongoDB官方文档或社区论坛(如Stack Overflow)获取进一步帮助。