调试 Debian 上的 MongoDB,一般可以从 服务状态、日志、配置、权限、端口、系统资源 这几个方面入手。下面给你一套比较系统的排查思路(适用于 Debian 10/11/12,MongoDB 4.4 / 5.x / 6.x 都通用)。
一、确认 MongoDB 是否安装成功
mongod --version
mongo --version # 旧版本
mongosh --version # 新版本(推荐)
如果命令不存在,说明没装好或路径不对。
二、检查 MongoDB 服务状态
1️⃣ systemd 状态
sudo systemctl status mongod
常见状态说明:
- ✅
active (running):正常 - ❌
failed:启动失败(重点看日志)
2️⃣ 重启服务
sudo systemctl restart mongod
sudo systemctl enable mongod
三、查看 MongoDB 日志(最关键)
MongoDB 默认日志位置:
/var/log/mongodb/mongod.log
实时查看:
sudo tail -f /var/log/mongodb/mongod.log
常见错误示例
| 日志内容 | 含义 |
|---|---|
Permission denied |
数据目录权限问题 |
Address already in use |
端口被占用 |
IllegalOperation: Attempted to create a lock file |
目录不可写 |
Data directory /data/db not found |
数据目录未创建 |
四、检查配置文件
MongoDB 配置文件一般在:
/etc/mongod.conf
重点检查:
storage:
dbPath: /var/lib/mongodb
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 127.0.0.1
修改后重启:
sudo systemctl restart mongod
五、检查数据目录权限(非常常见)
MongoDB 默认使用 mongodb 用户运行。
ls -ld /var/lib/mongodb
修复权限:
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chmod 755 /var/lib/mongodb
⚠️ 不要直接在 root 下跑 mongod
六、端口与网络问题
1️⃣ 检查端口是否监听
ss -lntp | grep 27017
或:
netstat -lntp | grep 27017
2️⃣ 本地连接测试
mongosh
或:
mongo
如果连不上:
mongosh --host 127.0.0.1 --port 27017
七、手动前台启动(调试神器)
停止服务后:
sudo systemctl stop mongod
sudo -u mongodb mongod --config /etc/mongod.conf
✅ 错误信息会直接打印到终端,比 systemd 清楚很多。
八、系统资源问题
1️⃣ 磁盘空间
df -h
2️⃣ 内存
free -h
MongoDB 对内存要求较高,低于 1GB 很容易异常。
九、Debian + MongoDB 常见坑
✅ 1. Debian 12 没有官方 MongoDB 包
需要手动加 MongoDB 官方源:
sudo apt install gnupg curl
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | \
sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-6.0.gpg
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] \
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/6.0 main" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update
sudo apt install mongodb-org
✅ 2. OpenSSL 版本不兼容
Debian 12 默认 OpenSSL 3,MongoDB 5/6 可能出现问题:
mongod: /lib/x86_64-linux-gnu/libssl.so.3: version `OPENSSL_3.0.0' not found
✅ 解决:使用 MongoDB 6.0+ 或官网二进制包。
十、快速自检清单 ✅
systemctl status mongod
tail -n 50 /var/log/mongodb/mongod.log
ss -lntp | grep 27017
ls -ld /var/lib/mongodb
mongosh
如果你愿意,可以把下面信息贴出来,我可以直接帮你定位问题:
-
systemctl status mongod输出 -
/var/log/mongodb/mongod.log最后 30 行 - Debian 版本(
cat /etc/debian_version) - MongoDB 版本
我可以一步一步带你修 ✅