在 Debian 上排查 MongoDB 错误,一般按「看日志 → 看服务状态 → 看配置 → 看资源/权限 → 复现验证」的顺序进行。下面给你一套实用排查流程。
systemctl status mongod
或(旧版本):
service mongod status
常见状态:
active (running):服务正常failed:启动失败,看日志inactive:未启动cat /var/log/mongodb/mongod.log
实时查看:
tail -f /var/log/mongodb/mongod.log
常见错误关键词:
Permission denied → 权限问题Address already in use → 端口被占用Unable to lock file → 数据目录冲突IllegalOperation → 配置或版本不兼容Debian 通常配置文件在:
/etc/mongod.conf
重点检查:
storage:
dbPath: /var/lib/mongodb
systemLog:
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 127.0.0.1
验证配置语法:
mongod --config /etc/mongod.conf --check
MongoDB 默认用户是 mongodb:
ls -ld /var/lib/mongodb
ls -l /var/lib/mongodb
修复权限(如必要):
chown -R mongodb:mongodb /var/lib/mongodb
chmod 700 /var/lib/mongodb
⚠️ 不要用 root 启动 mongod,否则权限会乱。
ss -tunlp | grep 27017
或:
lsof -i:27017
如果有其他进程占用:
mongod.conf 中的 portmongod --config /etc/mongod.conf --foreground
这样可以直接看到错误信息,不依赖 systemd。
Attempt to create a lock file on a directory that already has one
解决:
rm /var/lib/mongodb/mongod.lock
然后修复:
mongod --repair
检查:
net:
bindIp: 0.0.0.0
并确保防火墙允许:
ufw allow 27017
Authentication failed
authorization: enabledmongo -u user -p password --authenticationDatabase admin
mongod --version
cat /etc/os-release
Debian 版本与 MongoDB 版本不匹配也可能导致奇怪错误。
在 mongod.conf 中:
systemLog:
verbosity: 2
重启后查看日志。
✅ 服务是否运行
✅ 日志是否有明显错误
✅ 配置是否正确
✅ 目录权限是否为 mongodb
✅ 端口是否被占用
✅ 是否手动用 root 启动过
如果你能贴出:
systemctl status mongod 输出/var/log/mongodb/mongod.log 报错片段我可以直接帮你定位具体原因。