使用systemctl
命令检查MongoDB服务是否正在运行,这是快速定位服务异常的第一步:
sudo systemctl status mongod
若服务未运行,会显示“inactive (dead)”状态,需进一步排查启动失败原因;若服务运行中,状态会显示“active (running)”。
MongoDB的日志文件记录了详细的启动、运行及错误信息,是故障排查的核心依据。默认日志路径为/var/log/mongodb/mongod.log
,可通过以下命令查看最新日志:
sudo tail -n 100 /var/log/mongodb/mongod.log
重点关注日志中的“ERROR”“FAILED”等关键字,如“Permission denied”“Address already in use”等,可直接定位问题类型。
MongoDB的主配置文件为/etc/mongod.conf
,配置错误(如路径错误、参数无效)会导致服务无法启动。需检查以下关键配置项:
storage.dbPath
(如/var/lib/mongodb
),确保路径存在且可访问;systemLog.path
(如/var/log/mongodb/mongod.log
),确保有写入权限;net.port
(默认27017
),避免与其他服务冲突;net.bindIp
(如127.0.0.1
或0.0.0.0
),远程连接需设置为0.0.0.0
。sudo systemctl restart mongod
MongoDB需要对其数据目录(storage.dbPath
指定的路径)有读写权限,若权限不足会导致启动失败。需确保:
/var/lib/mongodb
);mongodb
用户(MongoDB默认运行用户):sudo chown -R mongodb:mongodb /var/lib/mongodb
0755
):sudo chmod -R 0755 /var/lib/mongodb
MongoDB默认使用27017
端口,若该端口被其他进程占用,服务将无法启动。可通过以下命令检查端口占用情况:
sudo lsof -i :27017
若端口被占用,会显示占用进程的PID,可通过kill
命令终止该进程(需确认进程无用):
sudo kill <PID>
终止进程后,重启MongoDB服务即可。
sudo apt update
sudo apt install mongodb-org
mongod
命令测试配置文件有效性:sudo mongod --config /etc/mongod.conf --fork --logpath /tmp/mongod_test.log
若配置错误,日志会显示具体错误信息,根据提示修改mongod.conf
。sudo systemctl stop mongod
sudo mongod --repair --dbpath /var/lib/mongodb
sudo systemctl start mongod
修复前建议备份数据目录(如cp -r /var/lib/mongodb /var/lib/mongodb_backup
)。systemctl status mongod
确认服务状态,未运行则启动服务;net.bindIp
为127.0.0.1
(仅本地访问),远程连接会被拒绝,需修改为0.0.0.0
并重启服务;ufw
防火墙,需允许MongoDB端口(默认27017
):sudo ufw allow 27017
security.authorization: enabled
),连接时需提供正确的用户名和密码:mongo -u <username> -p <password> --authenticationDatabase admin
mongodb
用户(参考“数据目录与权限”部分);sudo
运行MongoDB命令,需避免权限过高导致的安全问题,建议以mongodb
用户运行:sudo -u mongodb mongod --config /etc/mongod.conf
df -h /var/lib/mongodb
若磁盘使用率超过80%,需清理空间:
/var/log/syslog
、/var/log/mongodb/mongod.log
);apt
缓存:sudo apt clean
bindIp
设置为无效IP(如192.168.1.100
但该IP未绑定到服务器);/etc/mongod.conf
,将bindIp
设置为有效IP(如127.0.0.1
或服务器公网IP),或0.0.0.0
(允许所有IP连接);mongod --config /etc/mongod.conf --fork --logpath /tmp/mongod_test.log
测试配置有效性,无误后重启服务。