调试 Debian 上的 MongoDB,通常可以从 服务状态、日志、配置、权限、资源、网络 等方面入手。下面按常见排查顺序给你一个实用指南。
sudo systemctl status mongod
常见状态说明:
active (running):正常failed:启动失败(重点看日志)重启服务:
sudo systemctl restart mongod
sudo tail -n 100 /var/log/mongodb/mongod.log
如果是 systemd 启动:
journalctl -u mongod -n 100
addr already in use
Permission denied
DBException: repair
MongoDB 配置文件一般在:
/etc/mongod.conf
sudo nano /etc/mongod.conf
重点看:
storage:
dbPath: /var/lib/mongodb
systemLog:
path: /var/log/mongodb/mongod.log
logAppend: true
net:
port: 27017
bindIp: 127.0.0.1
常见错误:
dbPath 不存在或无权限bindIp 限制了访问ls -ld /var/lib/mongodb
ls -ld /var/log/mongodb
正确权限示例:
drwxr-x--- mongod mongod
修复权限:
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
如果 systemd 启动失败,可以手动运行:
sudo -u mongodb mongod --config /etc/mongod.conf
这样可以直接在终端看到错误信息。
ss -lntp | grep 27017
ps aux | grep mongod
mongosh
或(老版本)
mongo
mongosh "mongodb://IP:27017"
如果连不上,检查:
bindIpsudo ufw status
开放端口(如需要):
sudo ufw allow 27017
⚠️ 不建议直接暴露 27017 到公网
| 问题 | 排查点 |
|---|---|
| 启动失败 | /var/log/mongodb/mongod.log |
| 权限错误 | /var/lib/mongodb 权限 |
| 无法连接 | bindIp、端口、防火墙 |
| 数据损坏 | 日志中 corrupt |
| 内存不足 | dmesg / journalctl |
⚠️ 先备份数据
mongod --repair --dbpath /var/lib/mongodb
查看版本:
mongod --version
确保:
如果你愿意,可以把下面信息贴出来,我可以帮你精准定位:
systemctl status mongod/var/log/mongodb/mongod.log 的最后 50 行cat /etc/os-release)我可以直接帮你分析日志。