温馨提示×

ubuntu mongodb配置要注意什么

小樊
45
2026-09-10 18:05:31
栏目: 云计算

在 Ubuntu 上配置 MongoDB(以常见的 Ubuntu 20.04/22.04 + MongoDB 6.x/7.x 为例),有几个容易踩坑的点和安全/性能注意事项。下面按「安装 → 配置 → 安全 → 运维」给你梳理。


一、安装阶段注意事项

1. 使用官方源,不要用 apt 默认源

Ubuntu 自带仓库的 mongodb 通常版本很老(甚至是已废弃的 3.6)。

# 导入公钥
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
  sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

# 添加源
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | \
  sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

sudo apt update
sudo apt install -y mongodb-org

2. systemd 管理

Ubuntu 使用 systemd,不要手动起 mongod。

sudo systemctl enable mongod
sudo systemctl start mongod

检查状态:

sudo systemctl status mongod

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

1. 绑定 IP(非常关键)

默认:

net:
  bindIp: 127.0.0.1

如果只本地用:保持 127.0.0.1
如果远程访问:

bindIp: 0.0.0.0

⚠️ 一旦开放 0.0.0.0,必须开启鉴权


2. 开启鉴权(生产必开)

security:
  authorization: enabled

否则任何人都能直接操作数据库。


3. 数据目录权限

默认:

storage:
  dbPath: /var/lib/mongodb

确保目录权限正确:

sudo chown -R mongodb:mongodb /var/lib/mongodb

否则会启动失败(常见坑)。


三、安全配置(非常重要)

1. 创建管理员用户

进入 mongo shell:

mongosh
use admin
db.createUser({
  user: "root",
  pwd: "强密码",
  roles: ["root"]
})

然后重启:

sudo systemctl restart mongod

登录:

mongosh -u root -p --authenticationDatabase admin

2. 防火墙

只允许必要端口:

sudo ufw allow 27017
# 或只放行内网
sudo ufw allow from 10.0.0.0/8 to any port 27017

3. 不要用默认端口(可选)

net:
  port: 37017

四、性能与运维注意

1. 关闭透明大页(THP)

MongoDB 官方强烈建议:

echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag

持久化(systemd):

sudo nano /etc/systemd/system/disable-thp.service

2. 打开文件数限制

MongoDB 需要较高 ulimit:

sudo nano /etc/security/limits.conf
mongodb soft nofile 64000
mongodb hard nofile 64000

3. 日志与磁盘

  • 日志:/var/log/mongodb/mongod.log
  • 生产环境推荐使用 SSD
  • 避免数据库和日志在同一块慢盘

五、常见坑总结

问题 原因
启动失败 权限不对 / dbPath 不存在
远程连不上 bindIp 没改 / 防火墙
被黑 没开鉴权 + 0.0.0.0
性能差 THP 没关 / ulimit 低
升级失败 用了 Ubuntu 旧源

六、最小安全配置示例

net:
  port: 27017
  bindIp: 127.0.0.1

security:
  authorization: enabled

storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

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

  • Ubuntu 版本
  • MongoDB 版本
  • 是否公网 / 内网
  • 单机 / 副本集

我可以给你一份可直接用的配置模板。

0 踩