Ich habe einen Linode-Server mit Ubuntu 12.04 LTS und einer MongoDB-Instanz (Dienst wird ausgeführt und kann lokal eine Verbindung herstellen), zu der ich keine Verbindung von einer externen Quelle herstellen kann.
Ich habe diese beiden Regeln zu meinen IP-Tabellen hinzugefügt, wobei <IP-Adresse> der Server ist, von dem aus ich eine Verbindung herstellen möchte (wie in dieser MongoDB-Referenz beschrieben ):
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, die Verbindungen auf 27017 zu und von <IP-Adresse> zulässt. Wenn ich jedoch versuche, eine Verbindung von <IP-Adresse> zu meiner Mongo-Datenbank mit einem Befehl wie dem folgenden herzustellen:
mongo databasedomain/databasename -u username -p password
Ich erhalte 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 wird sehr geschätzt !!!! Vielen Dank!!!
Antworten:
Vielen Dank für die Hilfe an alle!
Es stellt sich heraus, dass es ein iptable Konflikt war. Zwei Regeln, die den offenen Port auflisten (was zu einem geschlossenen Port führte).
Einer der Kommentare von aka und ein anderer von manu2013 waren jedoch Probleme, auf die ich ohne den Konflikt gestoßen wäre.
Damit! Denken Sie immer daran, die
/etc/mongod.conf
Datei zu bearbeiten und festzulegenbind_ip = 0.0.0.0
, um externe Verbindungen herzustellen.Stellen Sie außerdem sicher, dass Ihre iptable keine widersprüchlichen Regeln für den gewünschten Port mongo enthält (siehe Link auf der Website von mongodb , um Ihre iptables ordnungsgemäß einzurichten).
quelle
sudo service mongod restart
bind_ip = 0.0.0.0
in der Produktion machen !!!! Oder Sie werden Ihren Server öffentlichVersuche Folgendes:
sudo rm /var/lib/mongodb/mongod.lock sudo service mongodb restart
quelle
mongodb-<port>.sock
Datei entfernen . in meinem Fall befindet es sich im Ordner / tmpDiese Befehle haben das Problem für mich behoben.
sudo rm /var/lib/mongodb/mongod.lock sudo mongod --repair sudo service mongod start sudo service mongod status
Wenn Sie sich hinter dem Proxy befinden, verwenden Sie: -
export http_proxy = "http: // Benutzername: [email protected]: port /"
export https_proxy = "http: // Benutzername: [email protected]: port /"
Referenz: https://stackoverflow.com/a/24410282/4359237
quelle
Für Ubuntu Server 15.04 und 16.04 müssen Sie nur diesen Befehl ausführen
quelle
Ich hatte kein
/data/db
Verzeichnis. Ich habe eine erstellt und einechmod 777
Erlaubnis gegeben und es hat bei mir funktioniertquelle
Eine andere Möglichkeit besteht darin, Ihre Datenbank einfach so zu reparieren (Hinweis: Das Verzeichnis db0 sollte zuerst vorab erstellt werden):
mongod --dbpath /var/lib/mongodb/ --repairpath /var/lib/mongodb/db0
Dies ist auch in Produktionsumgebungen eine akzeptable Option ...
quelle
Ich hatte auch das gleiche Problem. Erstellen Sie ein Verzeichnis in dbpath. In meinem Fall gab es kein Verzeichnis in / data / db. Also habe ich eines erstellt. Jetzt funktioniert es. Stellen Sie sicher, dass Sie diesem Verzeichnis die Berechtigung erteilen.
quelle
Für mich war es der richtige Weg, den Besitz von / var / lib / mongodb und /tmp/mongodb-27017.sock in mongodb zu ändern.
Mach einfach:
sudo chown -R mongodb:mongodb /var/lib/mongodb
und dann:
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
und starten oder starten Sie den Mongodb-Server neu:
oder
und überprüfen Sie den Status
quelle
In meinem Fall war die vorherige Version 3.2. Ich habe ein Upgrade auf 3.6 durchgeführt, aber die Datendateien waren nicht mit der neuen Version kompatibel. Daher habe ich alle Datendateien entfernt, da sie für mich und ihre Werke nicht verwendbar waren.
Sie können Protokolle mit überprüfen
/var/log/mongodb
quelle
Ich folge den Anweisungen dieses Tutorials zur Installation
So installieren Sie MongoDB unter Ubuntu 16.04
Ich hatte den gleichen Fehler. Schließlich fand ich heraus, dass ich die Portnummer einstellen musste
Die Standardportnummer für den Befehl mongo lautet 27017
Die Standardportnummer in mongo.conf ist jedoch 29999
quelle
Das hat den Trick für mich getan
quelle
Obwohl der Port geöffnet ist, überwacht MongoDB derzeit nur die lokale Adresse 127.0.0.1. Fügen Sie der Datei mongod.conf die öffentlich routbare IP-Adresse Ihres Servers hinzu, um Remoteverbindungen zuzulassen .
Öffnen Sie die MongoDB-Konfigurationsdatei in Ihrem Editor:
Fügen Sie die IP-Adresse Ihres Servers zum bindIP-Wert hinzu:
... logappend=true bind_ip = 127.0.0.1,your_server_ip #port = 27017 ...
Beachten Sie, dass sich jetzt jeder, der den Benutzernamen und das Kennwort hat, bei Ihrer Datenbank anmelden kann. Sie möchten dies vermeiden, indem Sie die Verbindung nur für bestimmte IP-Adressen einschränken. Dies kann mithilfe der Firewall erfolgen (Informationen zum UFW-Dienst bei Google). Aber kurz gesagt sollte dies ungefähr so sein:
sudo ufw allow from YOUR_IP to any port 27017
quelle