在 CentOS 上配置 MongoDB 出错,通常是配置文件格式、权限、SELinux、端口或数据目录等问题。下面按常见错误 → 排查方法 → 解决办法给你一个系统排查清单。
systemctl status mongod
journalctl -xe
或前台启动看详细错误:
mongod --config /etc/mongod.conf
MongoDB 使用 YAML,容易出错:
✅ 正确示例:
storage:
dbPath: /var/lib/mongo
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
net:
port: 27017
bindIp: 127.0.0.1
❌ 常见错误:
✅ 验证 YAML:
python -c "import yaml,sys; yaml.safe_load(open('/etc/mongod.conf'))"
错误示例:
Permission denied
解决:
mkdir -p /var/lib/mongo
chown -R mongod:mongod /var/lib/mongo
mkdir -p /var/log/mongodb
chown -R mongod:mongod /var/log/mongodb
查看是否被拦截:
getenforce
临时关闭测试:
setenforce 0
永久解决(推荐):
setsebool -P mongod_disable_trans 1
或修改安全上下文:
semanage fcontext -a -t mongod_var_lib_t "/data/mongo(/.*)?"
restorecon -Rv /data/mongo
netstat -tunlp | grep 27017
如果被占用,修改 mongod.conf:
net:
port: 27018
默认:
bindIp: 127.0.0.1
远程访问需改为:
bindIp: 0.0.0.0
⚠️ 生产环境务必加防火墙 + 鉴权
firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload
# 1. 停止服务
systemctl stop mongod
# 2. 检查配置
mongod --config /etc/mongod.conf --check
# 3. 修复权限
chown -R mongod:mongod /var/lib/mongo /var/log/mongodb
# 4. 启动
systemctl start mongod
systemctl enable mongod
你可以直接把报错日志或 mongod.conf 贴出来,我可以:
你现在是 CentOS 7 还是 8 / Stream?MongoDB 哪个版本?