首先確認MongoDB服務是否正在運行。使用以下命令查看服務狀態:
sudo systemctl status mongod
如果服務未啟動,用以下命令啟動并設置開機自啟:
sudo systemctl start mongod
sudo systemctl enable mongod
服務未運行是連接問題的常見原因,需優先排查。
MongoDB的配置文件路徑為/etc/mongod.conf,需重點檢查以下兩項:
net.bindIp:默認可能僅綁定到本地地址(127.0.0.1),若需遠程連接,需修改為0.0.0.0(允許所有IP訪問)或指定具體IP(如192.168.1.100)。net.port:默認端口為27017,確保未被其他服務占用,如需修改需同步調整客戶端連接配置。sudo systemctl restart mongod
注意:開放0.0.0.0會帶來安全風險,建議僅允許可信IP訪問(如192.168.1.0/24)。
Ubuntu默認啟用ufw防火墻,需允許MongoDB端口(默認27017)的入站連接:
sudo ufw allow 27017
查看防火墻狀態確認規則是否生效:
sudo ufw status
若防火墻未安裝,可通過sudo apt install ufw安裝。
ping localhost,確認本地網絡正常。ping <服務器IP>,確保網絡可達。若無法ping通,需排查網絡配置(如路由器、安全組)。日志文件路徑為/var/log/mongodb/mongod.log,使用以下命令實時查看最新日志:
sudo tail -f /var/log/mongodb/mongod.log
日志中會記錄連接失敗的詳細原因(如身份驗證失敗、端口沖突、配置文件語法錯誤),根據提示針對性解決。
若mongod.conf中啟用了身份驗證(security.authorization: enabled),遠程連接需提供正確的用戶名和密碼:
mongo --host <服務器IP> --port 27017 -u <用戶名> -p <密碼> --authenticationDatabase admin
若未創建用戶,需先登錄本地shell創建管理員賬戶:
mongo
use admin
db.createUser({user: "admin", pwd: "密碼", roles: [{role: "root", db: "admin"}]})
注意:身份驗證失敗會導致“Authentication failed”錯誤,需確保用戶名、密碼及數據庫名稱正確。
若用戶僅具有本地訪問權限,需為其授予遠程訪問權限。登錄MongoDB shell,執行以下命令:
use admin
db.grantRolesToUser("用戶名", [{role: "readWrite", db: "目標數據庫"}, {role: "userAdminAnyDatabase", db: "admin"}])
確保用戶擁有對應數據庫的操作權限。
通過以上步驟可解決絕大多數Ubuntu上的MongoDB連接問題。若仍無法解決,建議根據日志中的具體錯誤信息進一步排查(如SELinux限制、Docker網絡配置等)。