2014-07-23 405 views
60

我有一個運行Ubuntu 12.04 LTS和MongoDB實例的Linode服務器(服務正在運行並且可以本地連接),我無法從外部源連接到該服務器。連接被拒絕MongoDB errno 111

我加入了這兩個規則,我的IP表,其中< IP地址>是我想連接FROM(如本MongoDB reference概述)服務器:

iptables -A INPUT -s < ip-address > -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -d < ip-address > -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

我看到我的IP表中的規則允許連接27017上和從< IP地址>然而,當我嘗試從< IP地址>連接到我的mongo數據庫使用像這樣的命令:

mongo databasedomain/databasename -u username -p password

我得到這個錯誤:

2014-07-22T23:54:03.093+0000 warning: Failed to connect to databaseserverip:27017, reason: errno:111 Connection refused 2014-07-22T23:54:03.094+0000 Error: couldn't connect to server < ip address >:27017 (databaseserverip), connection attempt failed at src/mongo/shell/mongo.js:148 exception: connect failed

任何幫助是非常讚賞!!!!謝謝!!!

+0

你確定其他mongod正在運行嗎?你可以在本地連接到它嗎? – Sammaye

+0

mongod在本地運行,是的,我可以在本地連接。 – dbcooper

回答

100

感謝您的幫助大家!

原來,這是一個iptable衝突。列出端口打開的兩條規則(導致一個封閉的端口)。

但是,aka和manu2013的另一個評論是我遇到的問題,如果不是衝突的話。

所以!請始終記住編輯/etc/mongod.conf文件並設置您的bind_ip = 0.0.0.0以便進行外部連接。

此外,請確保您的iptable中沒有mongo端口需要的衝突規則(請參閱link on mongodb's site以正確設置您的iptables)。其他

+6

它的工作,你也可以註釋掉bind_ip –

+1

或者只是在連接字符串中使用127.0.0.1,而不是本地主機,並在內部連接... –

+4

不要忘記讓'sudo服務mongod restart' – mqklin

38

嘗試以下操作:

sudo rm /var/lib/mongodb/mongod.lock 
sudo service mongodb restart 
+1

沒有運氣。仍然收到連接失敗。謝謝你的嘗試。 – dbcooper

+1

您的MongoD服務器是否綁定在所有接口上偵聽? 2.6.x默認設置爲僅在本地主機上偵聽。您可以通過「netstat -an | grep 27017」來確認它,並且它應該顯示mongod綁定的所有IP地址。 – aks

+1

確保在配置文件mongodb.conf中,bindIp設置(早期版本的bind_ip)設置爲通過分配值0.0.0.0來偵聽所有接口。默認情況下,它只監聽本地主機,因爲它的默認值是127.0.0.1。 – manu2013

3

一種選擇是隻修復數據庫,像這樣(注:應預先創建的第一DB0目錄):

mongod --dbpath /var/lib/mongodb/ --repairpath /var/lib/mongodb/db0 

這也是在生產環境可以接受的辦法......

30

這些命令固定我的問題,

sudo rm /var/lib/mongodb/mongod.lock 
sudo mongod --repair 
sudo service mongod start 
sudo service mongod status 

如果你是落後的代理,用途: -
出口HTTP_PROXY =「HTTP: //username:[email protected]:port/」
出口https_proxy = 「HTTP://用戶名:[email protected]:端口/」

參考:https://stackoverflow.com/a/24410282/4359237

+0

如果我運行這個命令,它是否刪除我存儲在數據庫中的數據 – devend

+0

@devend它不應該作爲修復命令在所有數據庫上運行repairDatabase命令。 repairDatabase:檢查並修復數據存儲中的錯誤和不一致性。 repairDatabase類似於文件系統的fsck命令。 [參考](https://docs.mongodb.com/v3.0/reference/command/repairDatabase/#repairdatabase) – sk1pro99

14

對於Ubuntu服務器15.04和16。04您只需執行此命令

sudo apt-get install --reinstall mongodb 
+0

它的工作。謝謝。 –

6

我沒有/data/db目錄。我創建了一個,並給了一個chmod 777權限,它爲我工作

1

我也有同樣的問題。在dbpath中創建一個目錄。在我的情況下,沒有在/ data/db中的目錄。所以我創建了一個。現在它的工作。確保給該目錄許可。

相關問題