2014-07-23 19 views
60

Ich habe einen Linode-Server mit Ubuntu 12.04 LTS und MongoDB-Instanz (Dienst läuft und CAN-Verbindung lokal), die ich von einer externen Quelle nicht verbinden kann.Verbindung verweigert MongoDB errno 111

ich diese beiden Regeln zu meiner IP-Tabellen hinzugefügt haben, wo < IP-Adresse> ist der Server I FROM verbinden möchten (wie in diesem MongoDB reference umrandet):

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

Und ich sehe die Regel in meiner IP-Tabelle Verbindungen auf 27017 zu und von < IP-Adresse> aber wenn ich versuche, von < IP-Adresse> zu meiner Mongo-Datenbank mit einem Befehl wie folgt:

mongo databasedomain/databasename -u username -p password

ich diesen Fehler:

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

Jede Hilfe sehr geschätzt wird !!!! Vielen Dank!!!

+0

Sind Sie sicher, dass der andere Mongod läuft? Können Sie sich lokal mit ihm verbinden? – Sammaye

+0

Mongod läuft lokal und ja, ich kann lokal verbinden. – dbcooper

Antwort

100

Danke für die Hilfe jeder!

Es stellt sich heraus, dass es ein iptable Konflikt war. Zwei Regeln, die den offenen Port auflisten (was zu einem geschlossenen Port führte).

Allerdings war einer der Kommentare von aka und ein anderer von manu2013 Probleme, denen ich begegnet wäre, wenn nicht für den Konflikt.

Also! Denken Sie immer daran, die Datei /etc/mongod.conf zu bearbeiten und stellen Sie Ihre bind_ip = 0.0.0.0 ein, um externe Verbindungen herzustellen.

Auch stellen Sie sicher, dass Sie nicht widersprüchliche Regeln in Ihrem iptable für den Port mongo will (siehe link on mongodb's site, um Ihre iptables richtig einzurichten).

+6

es funktionierte und Sie können auch die bind_ip –

+1

auskommen oder nur 127.0.0.1 in der connectionString, anstelle von localhost, und intern verbinden ... –

+4

Vergessen Sie nicht zu machen 'sudo Service Mongod Restart' – mqklin

38

Versuchen Sie Folgendes:

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

Kein Glück. Immer noch der Verbindungsfehler. Danke für den Versuch. – dbcooper

+1

Ist Ihr MongoD-Server verpflichtet, alle Schnittstellen zu überwachen? 2.6.x ist standardmäßig so eingestellt, dass nur auf localhost gehört wird. Sie können dies durch "netstat -an | grep 27017" bestätigen und es sollte zeigen, an welche IP-Adressen der Mongod gebunden ist. – aks

+1

Stellen Sie sicher, dass in der Konfigurationsdatei mongodb.conf die bindIp-Einstellung (bind_ip für frühere Versionen) so eingestellt ist, dass alle Schnittstellen überwacht werden, indem der Wert 0.0.0.0 zugewiesen wird. Standardmäßig hört es nur auf localhost, da sein Standardwert 127.0.0.1 ist. – manu2013

3

Eine andere Option ist nur Ihre Datenbank zu reparieren, wie so (Anmerkung: db0 Verzeichnis vorab erstellt zuerst werden soll):

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

Dies ist auch eine akzeptable Option in Produktionsumgebungen ...

30

Diese Befehle das Problem für mich festgelegt,

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

Wenn Sie hinter Proxy verwenden: -
export http_proxy = "http: //username:[email protected]:port/“
Export https_proxy = "http: // username: [email protected]: port /"

Referenz: https://stackoverflow.com/a/24410282/4359237

+0

Wenn ich diesen Befehl ausführen entfernt es die Daten, die ich in der Datenbank gespeichert habe – devend

+0

@devend Es sollte nicht als Reparaturbefehl repairDatabase Befehl auf allen Datenbanken ausgeführt wird. repairDatabase: Prüft und repariert Fehler und Inkonsistenzen im Datenspeicher. repairDatabase ist analog zu einem fsck-Befehl für Dateisysteme. [Referenz] (https://docs.mongodb.com/v3.0/reference/command/repairDatabase/#repairdatabase) – sk1pro99

14

Für Ubuntu Server 15.04 und 16.04 Sie ausführen müssen nur diesen Befehl

sudo apt-get install --reinstall mongodb 
+0

Es hat funktioniert. Vielen Dank. –

6

Ich habe kein /data/db Verzeichnis haben. Ich erstellte eine und gab eine chmod 777 Erlaubnis und es funktionierte für mich

1

Ich hatte auch das gleiche Problem.Machen Sie ein Verzeichnis in dbpath.In meinem Fall gab es kein Verzeichnis in/data/db .So ich eine erstellt. Jetzt funktioniert es. Gewähren Sie diesem Verzeichnis die Erlaubnis.

Verwandte Themen