在 CentOS 上配置 MongoDB 时,有几个关键点和常见“坑”需要注意,特别是版本、权限、SELinux、防火墙和安全配置。下面按实用角度总结:
CentOS 默认源里的 mongodb 通常是很老的版本或根本不存在。
✅ 推荐做法:
示例(MongoDB 6.x / 7.x):
cat > /etc/yum.repos.d/mongodb-org.repo <<EOF
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
EOF
⚠️ 注意:
redhat/7redhat/8 或 9/var/lib/mongo
/var/log/mongodb
MongoDB 默认以 mongod 用户运行。
✅ 正确做法:
chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb
❌ 错误示例:
✅ 方案 A:临时关闭(测试用)
setenforce 0
✅ 方案 B:永久关闭(不推荐生产)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
✅ 方案 C:放行 MongoDB(推荐)
semanage port -a -t mongod_port_t -p tcp 27017
CentOS 默认使用 firewalld
firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload
⚠️ 如果是云服务器:
net:
bindIp: 127.0.0.1
❌ 不要直接:
bindIp: 0.0.0.0
除非你:
security:
authorization: enabled
mongo
use admin
db.createUser({
user: "root",
pwd: "StrongPassword",
roles: ["root"]
})
systemctl restart mongod
systemctl status mongod
journalctl -u mongod -xe
systemctl enable mongod
| 问题 | 原因 |
|---|---|
| 启动失败 | 目录权限不对 |
| 无法连接 | SELinux / 防火墙 |
| 写不了数据 | mongod 用户无权限 |
| 外网连不上 | bindIp 配置错误 |
| CPU 飙高 | 没建索引 / 查询全表 |
mongodump)如果你愿意,可以告诉我:
我可以直接给你一份可复制的配置文件 + 启动步骤。