温馨提示×

centos mongodb配置要注意什么

小樊
37
2026-09-18 00:42:18
栏目: 云计算

CentOS 上配置 MongoDB 时,有几个关键点和常见“坑”需要注意,特别是版本、权限、SELinux、防火墙和安全配置。下面按实用角度总结:


一、版本与安装方式

1. 不要用 CentOS 自带 yum 源

CentOS 默认源里的 mongodb 通常是很老的版本或根本不存在。

✅ 推荐做法:

  • MongoDB 官方 YUM 源(推荐)
  • 或下载官方 RPM 包

示例(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

⚠️ 注意:

  • CentOS 7 → 用 redhat/7
  • CentOS 8/Stream → 用 redhat/89

二、数据目录与权限(非常重要)

1. 默认数据目录

/var/lib/mongo
/var/log/mongodb

2. 权限问题(最常见)

MongoDB 默认以 mongod 用户运行。

✅ 正确做法:

chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb

❌ 错误示例:

  • 用 root 启动一次后,目录变成 root 权限
  • 之后再起不来

三、SELinux(CentOS 特有坑)

1. 症状

  • MongoDB 能启动
  • 但无法写入数据
  • 或无法监听端口

2. 解决方式(三选一)

✅ 方案 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

四、防火墙(firewalld)

CentOS 默认使用 firewalld

开放 MongoDB 端口

firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload

⚠️ 如果是云服务器:

  • 还要在安全组放行 27017

五、配置文件要点(/etc/mongod.conf)

1. 绑定 IP(安全关键)

net:
  bindIp: 127.0.0.1

❌ 不要直接:

bindIp: 0.0.0.0

除非你:

  • 配置了账号密码
  • 或只在内网

2. 开启认证

security:
  authorization: enabled

六、账号与安全(生产必做)

1. 先本地免密启动

mongo

2. 创建管理员

use admin
db.createUser({
  user: "root",
  pwd: "StrongPassword",
  roles: ["root"]
})

3. 重启并开启认证

systemctl restart mongod

七、Systemd 相关

查看状态

systemctl status mongod
journalctl -u mongod -xe

开机自启

systemctl enable mongod

八、常见错误汇总

问题 原因
启动失败 目录权限不对
无法连接 SELinux / 防火墙
写不了数据 mongod 用户无权限
外网连不上 bindIp 配置错误
CPU 飙高 没建索引 / 查询全表

九、生产环境建议

  • ✅ 开启 auth
  • ✅ 禁用公网 27017
  • ✅ 定期备份(mongodump
  • ✅ 使用副本集(≥3 节点)
  • ✅ 监控慢查询

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • MongoDB 版本
  • 用途(开发 / 生产 / 单机 / 集群)

我可以直接给你一份可复制的配置文件 + 启动步骤

0