首先确认MongoDB服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mongod
如果服务未运行,启动服务并设置开机自启:
sudo systemctl start mongod # 启动服务
sudo systemctl enable mongod # 设置开机自启
若服务启动失败,需结合日志进一步排查。
日志是定位故障的关键,MongoDB默认日志路径为/var/log/mongodb/mongod.log
。使用以下命令实时查看日志末尾内容:
sudo tail -f /var/log/mongodb/mongod.log
日志中会记录启动失败、连接拒绝、权限问题等具体错误信息,根据提示针对性解决。
MongoDB主配置文件通常位于/etc/mongod.conf
,需检查以下关键配置项:
net.bindIp
:设置允许连接的IP地址(本地测试用127.0.0.1
,远程访问用0.0.0.0
);storage.dbPath
:数据存储目录(默认/var/lib/mongodb
);systemLog.path
:日志文件路径(默认/var/log/mongodb/mongod.log
);security.authorization
:是否启用身份验证(enabled
表示需要账号密码)。sudo systemctl restart mongod
MongoDB需要对数据目录有读写权限,默认路径为/var/lib/mongodb
。使用以下命令修复权限:
sudo mkdir -p /var/lib/mongodb # 若目录不存在则创建
sudo chown -R mongodb:mongodb /var/lib/mongodb # 修改所有者为mongodb用户
sudo chmod -R 755 /var/lib/mongodb # 设置目录权限
权限问题会导致MongoDB无法启动或写入数据。
检查端口占用:MongoDB默认使用27017端口,使用以下命令查看端口占用情况:
sudo netstat -tulnp | grep 27017 # 查看27017端口的进程
若端口被占用,终止占用进程或修改MongoDB配置文件中的net.port
(如改为27018
)。
配置防火墙:若系统启用了ufw
防火墙,需允许MongoDB端口通过:
sudo ufw allow 27017/tcp # 允许TCP协议的27017端口
sudo ufw reload # 重新加载防火墙规则
本地连接:在Ubuntu服务器上使用mongo
命令测试本地连接:
mongo --host 127.0.0.1 --port 27017
若提示“Connection refused”,需检查服务状态、配置文件及端口。
远程连接:若需从其他机器连接,需确保:
net.bindIp
设置为0.0.0.0
(允许所有IP访问);mongo --host your_server_ip --port 27017
)。确保系统有足够的内存、磁盘空间和CPU资源,使用以下命令查看资源使用情况:
free -h # 查看内存使用情况
df -h # 查看磁盘空间使用情况
top # 查看CPU使用率
若资源不足(如磁盘空间耗尽),需清理无用文件或扩容。
若MongoDB无法启动且日志提示数据目录损坏,可使用--repair
参数修复:
sudo mongod --config /etc/mongod.conf --repair # 修复数据目录
修复完成后,重启服务即可。
以上步骤覆盖了Ubuntu上MongoDB的常见故障场景,按顺序排查通常可定位并解决问题。若仍无法解决,建议参考MongoDB官方文档或社区论坛获取更详细的帮助。