Ubuntu MongoDB配置常見問題及解決方法
服務無法啟動是Ubuntu配置MongoDB時的常見問題,可能由配置錯誤、權限不足或依賴缺失導致。解決方法:
sudo systemctl status mongod
確認服務是否處于“active (running)”狀態,若未啟動則執行sudo systemctl start mongod
。sudo tail -f /var/log/mongodb/mongod.log
查看詳細錯誤信息(如配置文件語法錯誤、端口沖突等),根據日志提示修復問題。sudo mongod --config /etc/mongod.conf --fork --logpath /tmp/mongod.log
測試配置文件有效性,若有錯誤會輸出具體提示。配置文件(默認路徑/etc/mongod.conf
)的參數設置錯誤會導致MongoDB無法正常工作,常見錯誤包括:
net.port
設置的端口已被其他進程占用(如默認的27017端口被占用),可通過sudo netstat -tulnp | grep 27017
檢查端口占用情況,修改為未被使用的端口(如27018)。net.bindIp
設置為不存在的IP地址(如192.168.1.100
但服務器無此IP),需修改為有效IP(如127.0.0.1
僅本地訪問,0.0.0.0
允許遠程訪問)或留空(默認監聽所有可用接口)。storage.dbPath
或systemLog.path
指定的目錄不存在,需創建目錄(如sudo mkdir -p /var/lib/mongodb
)并設置正確權限。MongoDB對數據目錄和日志目錄的權限要求嚴格,常見錯誤為“Permission denied”或“Failed to create lock file”。解決方法:
mongodb
用戶(默認安裝的用戶):sudo chown -R mongodb:mongodb /var/lib/mongodb
(若數據目錄為自定義路徑,替換為對應路徑)。0755
(允許所有者讀寫執行,其他用戶讀執行):sudo chmod -R 0755 /var/lib/mongodb
。storage.dbPath
參數。若需從遠程機器訪問MongoDB,需解決以下問題:
/etc/mongod.conf
中的net.bindIp
為0.0.0.0
(允許所有IP連接)或指定遠程IP(如192.168.1.100
),修改后重啟服務:sudo systemctl restart mongod
。ufw
防火墻,需開放MongoDB端口(默認27017):sudo ufw allow 27017
。security.authorization: enabled
(推薦),需創建遠程訪問用戶(如admin
用戶)并授予權限,否則會拒絕連接。MongoDB對內存和磁盤空間要求較高,資源不足會導致啟動失敗或性能下降:
free -h
檢查內存使用情況,若可用內存小于1GB,需調整storage.wiredTiger.engineConfig.cacheSizeGB
參數(如設置為1
,表示使用1GB內存作為緩存),減少內存占用。df -h
檢查磁盤空間,若/
分區剩余空間小于10%,需清理無用文件(如日志文件/var/log/
、臨時文件/tmp/
)或擴容磁盤。若啟用了security.authorization: enabled
但未創建用戶,會導致無法登錄;若未啟用,則存在安全風險。解決方法:
mongo
命令進入本地shell,創建管理員用戶(如admin
):use admin
db.createUser({user: "admin", pwd: "your_password", roles: [{role: "root", db: "admin"}]})
退出后,使用mongo -u admin -p your_password --authenticationDatabase admin
登錄。security.authorization: enabled
,重啟服務后需創建用戶并使用認證登錄。日志文件(默認路徑/var/log/mongodb/mongod.log
)過大或權限錯誤會影響MongoDB運行:
sudo journalctl --vacuum-time=1w
清理1周前的系統日志,或通過logRotate
工具定期壓縮日志(需配置/etc/logrotate.d/mongodb
)。mongodb
且權限正確:sudo chown -R mongodb:mongodb /var/log/mongodb
,sudo chmod -R 0755 /var/log/mongodb
。