2015-06-17 8 views
11

Ich habe wirklich versucht, sogar die MongoDB neu zu installieren.MongoDB bind_ip funktioniert nicht, wenn es auf 0.0.0.0 gesetzt ist

Und es ist das gleiche zu MongoDB bind_ip error: bind() failed errno:99 Cannot assign requested address for socket

Es funktioniert, wenn gesetzt bind_ip auf: 0.0.0.0 oder 127.0.0.1

$ sudo service mongod start 
mongod start/running, process 30040 
$ sudo service mongod restart 
mongod stop/waiting 
mongod start/running, process 29704 
$ mongo --port 19708 
MongoDB shell version: 3.0.3 
connecting to: 127.0.0.1:19708/test 
> 

Es wird nicht, wenn bing_ip einstellen arbeiten: 127.0.0.1,192.118.96.10,42.112.36.110

$ sudo service mongod start 
mongod start/running, process 29969 
$ sudo service mongod restart 
stop: Unknown instance: 
mongod start/running, process 29766 
$ mongo --port 19708 
MongoDB shell version: 3.0.3 
connecting to: 127.0.0.1:19708/test 
2015-06-17T06:32:34.625+0000 W NETWORK Failed to connect to 127.0.0.1:19708 
reason: errno:111 Connection refused 
2015-06-17T06:32:34.627+0000 E QUERY 
Error: couldn't connect to server 127.0.0.1:19708 (127.0.0.1), connection attempt failed 
at connect (src/mongo/shell/mongo.js:181:14) 
at (connect):1:6 at src/mongo/shell/mongo.js:181 
exception: connect failed 

Standorte:

$ which mongod 
/usr/bin/mongod 
$ which mongo 
/usr/bin/mongo 

Konfigurationen in /etc/mongod.conf

dbpath=/var/lib/mongodb 

logpath=/var/log/mongodb/mongod.log 

logappend=true 

port = 19708 

# ips, eg: 
# private ip for mongodb server: 192.118.96.10 
# public ip for remote app server: 42.112.36.110 

bind_ip = 127.0.0.1,192.118.96.10,42.112.36.110 

auth = true 

Vielen Dank im Voraus.

Antwort

15

Edit: Ich weiß nicht, ob ich mit meiner Antwort oder wenn das Verhalten von bind_ip einfach falsch war wurde geändert, aber es ist möglich verschiedene IPs an mehr, zu binden

bind_ip:127.0.0.1,10.0.0.1,8.8.8.8 

So Am wahrscheinlichsten war eine der IP-Adressen, denen mongod zugewiesen wurde, um zu binden, existierte auf dem fraglichen Rechner nicht.


Sie können mongod binden nur an eine IP, mit 0.0.0.0 der Alias ​​für sein „auf allen verfügbaren Netzwerkschnittstellen hören“.

Also entweder verwenden

bind_ip=127.0.0.1 

auf die Loopback-Schnittstelle oder

bind_ip=<someIP> 

zu hören, dass IP nur oder

bind_ip=0.0.0.0 

zu hören zu hören Alle verfügbaren IPs auf dem System.

Wenn Sie mehrere spezifische IPs hören müssen, ist es sehr wahrscheinlich, dass Ihr Systemdesign irgendwie verschraubt ist.

+0

Es ist generell eine falsche Idee Verbindungen von 0.0.0.0 –

+0

@DushanSavich ich es wagen akzeptieren Objekt. Bei großen Clustern, in denen dynamisch zugewiesene IP-Adressen das Werkzeug der Wahl sein könnten (Einrichten der Maschinen mit DHCP, BootP und Kickstart zum Beispiel), könnte es durchaus sinnvoll sein, auf 0.0.0.0 zu hören, wie die System-IP-Adresse wäre unbestimmbar beim Schreiben des Setups. Obwohl ich zustimme, dass es sehr wichtig ist, beim Hören von 0.0.0.0 sehr vorsichtig zu sein, kann ich nicht zustimmen, dass dies per se schlecht ist. –

+0

würde ich auch nicht zustimmen. Ich möchte, dass meine Remote-VPN-Entwicklungsmaschinen eine Verbindung über die VPN-Schnittstelle herstellen können, und ich möchte, dass auch Localhost eine Verbindung herstellt. Ich möchte nicht, dass es auf der mit dem Internet verbundenen Schnittstelle hört. Ist mein (zugegebenermaßen sehr kompaktes) Systemdesign verschraubt? –

0

Hey ich benutze MongoDB Shell-Version: 3.2.6.

bindIP = 127.0.0.1,192.168.0.50 
bindIP = [127.0.0.1,192.168.0.50] 
bind_ip = 192.168.6.38 

nicht funktioniert, ich habe mongod.conf bearbeitet diesem Befehl

sudo -i gedit /etc/mongod.conf file 

und änderte bind_ip = 0.0.0.0 auf bind_ip = 192.168.6.38 es gut funktioniert ....

10

Ich hatte das gleiche Problem nur wegen des dummen Fehlers.

Es gab ein kommentiertes Zeilen- und Leerzeichenproblem.

Was ich tat, falsch

# network interfaces 
net: 
    port: 27017 
#bindIp: 127.0.0.1 
bindIp: privateIp 

statt

net: 
    port: 27017 
    bindIp: 10.1.2.4 

für binden an Multiples ips

bindIp: [127.0.0.1,10.128.0.2] 

hoffentlich diese Antwort hilfreich für jemanden.

+0

Ich verwende die MongoDB auf Ubuntu 14.04 LTS. bindIp: [127.0.0.1,10.128.0.2] funktioniert für mich. Vielen Dank! –

0

Die Dokumentation sagte

„Sie können eine Liste der durch Komma getrennte Werte verketten mongod auf mehrere IP-Adressen zu binden.“

Also, es ist nicht wahr ...

1

Ich verbrachte Stunden mit dieser Frage meinen Kopf gegen eine Wand zu schlagen. Irgendwann sah ich Logs an und googelte, was ich da gefunden hatte. Irgendwo, wenn ich 'mongo bindIp multipl' (usw.) gegoogelt habe, war eine Menge Seiten wie diese mit Antworten, die nicht geholfen haben. Zuerst wird der Block in /etc/mongod.conf, die für mich gearbeitet wurde:

# network interfaces 
net: 
    port: 27017 
    bindIp: 127.0.0.1,172.16.1.2 

Keine Leerzeichen, keine Zitate, keine Klammern ... aber auch mit ihm gab richtig Neustarten mongodb einen Fehler und dann verweigerte anfangen. Ich verbrachte Stunden damit, verschiedene andere Konfigurationen auszuprobieren, die inkorrekt waren (was frustrierend ist, da die Korrektheit dieser Zeile das Problem nicht wirklich löste und ich mir nicht bewusst war, dass es noch eine andere gab).

Ich konnte es lösen, indem die mongodb Socket-Datei zu löschen:

rm /etc/mongodb-27017.sock 

Nach diesem Lauf

systemctl restart mongod 

ohne Fehler gearbeitet. Die interessante Sache (ein Teil von dem, was es wirklich frustrierend machte) war, dass während des Trial-and-Error-Prozesses, wenn ich die bindIP auf 127.0.0.1 zurücksetzte und mongod neu startete, was mich denken ließ, dass diese Zeile in Ordnung war und die Probleme waren mit den alternativen Einträgen/Syntax habe ich versucht. (Meine beste Vermutung ist, dass etwas in der Socket-Datei auf die ips verweist? Ich bin mit diesem Element des Codierens nicht vertraut.)

Nach dem Löschen des Sockets konnte ich dann in mongo shell (Optionen bei aktivierter Authentifizierung erforderlich)):

mongo -u admin -p password --authenticationDatabase "admin") 

die die 127.0.0.1 funktioniert und auch von meinem Remote-App verbinden (in meinem aktuellen Szenario der nodebb Test Instanz mir Einrichtung) feststellt, dass.

2

Mongo 3.6.2 Gemeinschaft

Die Lösung war für mich den Abschnitt von/etc/mongod zu bearbeiten.conf

# network interfaces 
net: 
    port: 27017 
    bindIp: 127.0.0.1,192.168.1.240 # No brackets, No spaces, only comma separated 

#security 

Dann ist diese speichern und tun den Dienst neu zu starten und überprüfen:

> service mongod restart 
> service mongod status 

hier Kein Ausfall, überprüfen nun, dass jemand zuhört:

> netstat -a |grep :27017 

tcp 0 0 yourhostname:27017 0.0.0.0:*  LISTEN 
tcp 0 0 localhost:27017  0.0.0.0:*  LISTEN 

Verbinden Sie nun Ihre Lieblings mit Mongo-Tools oder Befehlszeile.

Einige Ergebnisse unterschiedlicher Formatierung in /etc/mongod.conf

  • Komma und Raum führt nur die erste IP gebunden zu sein.
  • Raum nur Separator führt nur die erste IP gebunden zu sein
  • [] Surround zu einem Fehler mongod starten
Verwandte Themen