首先確認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的常見故障場景,按順序排查通??啥ㄎ徊⒔鉀Q問題。若仍無法解決,建議參考MongoDB官方文檔或社區論壇獲取更詳細的幫助。