在 Ubuntu 上配置 MongoDB,有几个常见但容易踩坑的点,下面按安装 → 配置 → 安全 → 运维给你梳理一下。
Ubuntu 自带源里的 mongodb 通常是旧版或不完整。
# Ubuntu 22.04 示例
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 jammy/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
MongoDB 默认配置文件在:
/etc/mongod.conf
net:
bindIp: 127.0.0.1
# 或允许局域网
# bindIp: 0.0.0.0
⚠️ 生产环境不要直接 0.0.0.0 + 无认证
security:
authorization: enabled
重启服务:
sudo systemctl restart mongod
use admin
db.createUser({
user: "admin",
pwd: "强密码",
roles: ["root"]
})
连接:
mongosh -u admin -p --authenticationDatabase admin
sudo systemctl disable mongod
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
或写 systemd 启动脚本。
ulimit -n 64000
ulimit -u 64000
可写入:
/etc/security/limits.conf
storage:
dbPath: /var/lib/mongodb
systemLog:
path: /var/log/mongodb/mongod.log
⚠️ 如果换盘:
dbPathmongodb 用户sudo chown -R mongodb:mongodb /data/mongodb
sudo systemctl enable mongod
sudo systemctl status mongod
sudo ufw allow from 你的IP to any port 27017
❌ 不要直接 allow 27017
| 问题 | 原因 |
|---|---|
| 起不来 | 权限不对 / dbPath 不存在 |
| 远程连不上 | bindIp 没改 |
| 连上没权限 | 没开 authorization |
| 性能差 | 没关 THP |
| 数据丢 | 没配 journal / 强杀进程 |
如果你愿意,可以告诉我:
我可以给你一份可直接用的配置模板。