CentOS 上 MongoDB 无法启动的原因有很多,下面按最常见原因 → 排查方法 → 解决办法给你系统梳理一下,你可以逐条对照。
不要只看 service 或 systemctl 的返回,要看日志:
journalctl -u mongod -xe
# 或
cat /var/log/mongodb/mongod.log
90% 的问题日志里都会写清楚。
MongoDB 默认使用 mongod 用户运行。
报错示例:
Permission denied
解决:
chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb
报错示例:
Data directory /var/lib/mongo not found
解决:
mkdir -p /var/lib/mongo
chown mongod:mongod /var/lib/mongo
配置文件位置:
/etc/mongod.conf
常见错误:
bindIp 写错storage.dbPath 指向不存在目录检查语法:
mongod --config /etc/mongod.conf --check
报错示例:
Address already in use
解决:
netstat -tunlp | grep 27017
# 或
ss -tunlp | grep 27017
杀掉占用进程或修改端口。
现象: 权限看起来没问题,但就是起不来。
临时关闭测试:
setenforce 0
systemctl start mongod
如果这样能启动,说明是 SELinux 问题:
永久解决:
setsebool -P mongod_can_read_write_on_nfs 1
# 或允许端口
semanage port -a -t mongod_port_t -p tcp 27017
报错示例:
Transparent Huge Pages (THP) is enabled
解决:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
报错示例:
Detected unclean shutdown
解决:
rm -f /var/lib/mongo/mongod.lock
chown mongod:mongod /var/lib/mongo
systemctl start mongod
systemctl enable mongod
systemctl start mongod
✅ 用户权限
✅ 数据目录存在
✅ 配置文件语法
✅ 端口未被占用
✅ SELinux
✅ 日志无 FATAL
你可以直接贴出:
systemctl start mongod 的报错/var/log/mongodb/mongod.log 最后 20 行我可以精确告诉你哪一行导致启动失败。