Verbindung zum Server 127.0.0.1 shell / mongo.js konnte nicht hergestellt werden

88

Wenn ich Mongodb in meinem Ubuntu einrichte, versuche ich: ./mongo zeigt es diesen Fehler:

 couldn't connect to server 127.0.0.1 shell/mongo.js

Was kann ich also tun ,

Vielen Dank

zjm1126
quelle
Wie haben Sie es installiert? Hast du eine Begabung benutzt? Haben Sie den Tarbal direkt heruntergeladen?
Bryan Migliorisi
1
Ich hatte diesen Fehler und es war, weil ich auf Ubuntu nicht mongodzuerst lief
Connor Leech

Antworten:

124
  • Entfernen Sie die Sperrdatei manuell: sudo rm /var/lib/mongodb/mongod.lock
  • Führen Sie das Reparaturskript aus: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Bitte beachten Sie Folgendes:

  • Sie müssen diesen Befehl als Mongodb-Benutzer ausführen. Wenn Sie es als root ausführen, besitzt root Dateien in / var / lib / mongodb /, die zum Ausführen des mongodb-Daemons erforderlich sind. Wenn der Daemon versucht, später als mongodb-Benutzer ausgeführt zu werden, verfügt er nicht über Startberechtigungen . In diesem Fall wird folgende Fehlermeldung angezeigt: Sperrdatei für Sperrdateipfad kann nicht erstellt / geöffnet werden: /var/lib/mongodb/mongod.lock errno: 13 Berechtigung verweigert, Beenden.
  • Unter Ubuntu müssen Sie die Konfigurationsdatei /etc/mongodb.conf mit dem Flag -f angeben. Andernfalls wird an der falschen Stelle nach den Datendateien gesucht und der folgende Fehler wird angezeigt: dbpath (/ data / db /) ist nicht vorhanden und wird beendet.
fady mohamed osman
quelle
Toller Link. Das Problem genau gelöst.
Jaketrent
1
Die Antwort ist jetzt oben.
Fady Mohamed Osman
2
Wie kann man das als Mongodb-Benutzer ausführen?
user4951
Fügen Sie sich einfach der Mongodb-Gruppe hinzu: useradd -G mongodb fady Ersetzen Sie fady durch Ihren Benutzernamen.
Fady Mohamed Osman
2
Ich musste sowohl die Informationen dieser Antwort als auch die Antwort von @boulder_ruby verwenden. Dies liegt daran, dass mein '/ data / db /' fehlte. Vielleicht könnte es ein gutes Update sein, damit diese Antwort vollständiger wird.
Fabricio Buzeto
32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Hier ist alles, manchmal dauert es eine Weile, bis Mongo nach diesen Operationen gestartet ist.

Rubyrider
quelle
Wenn ich "sudo -u mongodb mongod -f /etc/mongodb.conf --repair" versuche, bekomme ich Folgendes:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus
21

Ich versuche $ mongod laufen zu lassen

Wenn Sie einen Fehler wie z

MongoDB shell version: 2.0.5
connecting to: test
Fri Jun  1 11:20:33 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed

hisham-agil:~ hisham$ mongod
mongod --help for help and startup options
Fri Jun  1 11:24:47 [initandlisten] MongoDB starting : pid=53452 port=27017 dbpath=/data/db/ 64-bit host=hisham-agil.local
Fri Jun  1 11:24:47 [initandlisten] db version v2.0.5, pdfile version 4.5
Fri Jun  1 11:24:47 [initandlisten] git version: nogitversion
Fri Jun  1 11:24:47 [initandlisten] build info: Darwin gamma.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:48:32 PST 2012; root:xnu-1699.24.23~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
Fri Jun  1 11:24:47 [initandlisten] options: {}
Fri Jun  1 11:24:47 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Fri Jun  1 11:24:47 dbexit: 
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close listening sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to flush diaglog...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: waiting for fs preallocator...
Fri Jun  1 11:24:47 [initandlisten] shutdown: lock for final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: closing all files...
Fri Jun  1 11:24:47 [initandlisten] closeAllFiles() finished
Fri Jun  1 11:24:47 dbexit: really exiting now

Dann ist ein grundlegender Startfehler aufgetreten, der ziemlich häufig auftritt.

Standardmäßig versucht mongod, / data / db für seine Datenbankdateien zu verwenden, die in diesem Fall nicht vorhanden sind.

Du kannst nicht anfangen

mongo 

bis du fertig bist

mongod.

Versuchen Sie, diese Verzeichnisse zu erstellen, und stellen Sie sicher, dass sie von demselben Benutzer geschrieben werden können, der den Mongod-Prozess ausführt.

** Siehe ähnliche Frage - Fehlermeldung "Fehler: Verbindung zum Server 127.0.0.1 konnte nicht hergestellt werden - shell / mongo.js" und beim Versuch, mongodb auf einem Mac OSX Lion auszuführen

boulder_ruby
quelle
Sie können den Datenbankpfad auch wie folgt einstellen: mongod --dbpath ../data
cbaigorri
20

Dies ist eigentlich kein Fehler ... Was hier passiert, ist, dass Mongo zum Ausführen des lokalen Datenbankservers auf einen Dämon angewiesen ist. Um den Mongo-Server in Ihrer Shell zu "starten " , müssen Sie den Mongo-Dienst starten zuerst.

Für Fedora Linux (die von mir verwendete Distribution ) müssen Sie folgende Befehle ausführen:

1 sudo service mongod start
2 mongo

Und da hast du es! Der Server wird ausgeführt. Wenn der Mongo-Dienst beim Systemstart gestartet werden soll, müssen Sie Folgendes ausführen:

sudo chkconfig --levels 235 mongod on

Und das ist alles! Wenn Sie das tun, müssen Sie jetzt in der Shell nur noch mongo eingeben , um den Server zu starten, aber das ist so ziemlich alles. Das Problem ist, dass Sie zuerst den SERVICE und dann den SERVER starten müssen :)

PS Die Befehle, die ich gepostet habe, funktionieren möglicherweise auch in anderen Linux-Distributionen, nicht nur in Fedora ... Falls dies nicht der Fall ist, müssen Sie je nach verwendeter Distribution möglicherweise einige Wörter anpassen;)

Jmlevick
quelle
Die gleiche Lösung gilt für die Frage: stackoverflow.com/questions/7958228/…
Jmlevick
So oft bin ich ratlos und kratzte mir lange am Kopf und merkte schließlich: "Oh, ich muss nur sudo."
ben author
2
und für Debian / Ubuntu-Varianten: sudo service mongodb start
ljs.dev
10

Ich habe das gleiche Problem, als ich versuchte, Mongo zu installieren. Ich habe Fehler als,

Error

"Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84"

Lösung:

Installieren Sie mongod zuerst mit:

sudo apt-get install mongodb-server

Geben Sie dann ein

mongod --dbpath /mongo/db

Dann

sudo rm /var/lib/mongodb/mongod.lock

Dann

sudo -u mongodb mongod -f /etc/mongodb.conf  --repair

Danke

Samarth P Shenoy
quelle
Löscht diese Methode die vorhandenen Datenbanken in Mongo?
Evan
6

Sie müssen die Sperrdatei löschen mongod.lockoder /var/lib/mongodb/mongod.lockauf ubuntu, dann müssen Sie laufen mongod.exeoder service mongodb startauf ubuntu zuerst, dann laufen mongo.exeoder mongoauf Ubuntu.

user1391225
quelle
Das OP ist unter Ubuntu, daher bin ich mir ziemlich sicher, dass sie keine .exeDateien verwenden werden.
me_and
Ich erhalte diese Fehlermeldung und kann in meinem Dateisystem keine "mongod.lock" finden. Gilt diese Anleitung für Mac OSX?
boulder_ruby
5

Entweder läuft Ihr Mongod nicht (überprüfen Sie dies mit dem Befehl "ps") oder es lauscht auf einer externen IP-Adresse und nicht auf localhost. Überprüfen Sie also zuerst die Prozessliste, ob 'mongod' ausgeführt wird. Wenn ja, überprüfen Sie mit "netstat -nap" den zugehörigen Port.

Natürlich können Sie mongod manuell auf der Konsole starten oder sogar in die mongod-Protokolldatei schauen (falls eine konfiguriert ist ... je nachdem, wie Sie mongod installiert haben).

Andreas Jung
quelle
5

Zuerst müssen Sie sicherstellen, dass alle Dateien und Verzeichnisse in Ihrem Ordner / var / lib / mongodb / (oder dem Ordner, auf den dbpath verweist) dem Benutzer mongodb und der Gruppe mongodb gehören.

cd /var/lib/mongodb/
sudo chown mongodb filename.*
sudo chgrp mongodb filename.*
sudo chown -R mongodb directory
sudo chgrp -R mongodb directory

(Ersetzen Sie Dateiname und Verzeichnis durch ihre jeweiligen Namen)

Dann können Sie die Sperre aufheben, die Datenbank reparieren und den Dämon neu starten, wie andere bereits erwähnte Personen:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start
Tom Desair
quelle
Wie kommt es, dass es dafür keine positiven Stimmen gibt? Dies war die einzige Lösung unter einem halben Dutzend SO-Einträgen, die ich gesucht habe und die für mich funktioniert hat. Danke mein Herr.
FRD
Der Befehl, mit der Konfigurationsdatei zu beginnen und eine Reparatur zu erzwingen, ist sudo -u mongodb mongod -f /etc/mongod.conf --repairunter Ubuntu 14.
Okoboko
5

Starten Sie zuerst Ihren Mongo-Server mit

Users-MacBook-Pro:csv1 Admin$ mongod
all output going to: /usr/local/var/log/mongodb/mongo.log

Öffnen Sie dann ein anderes Terminalfenster und öffnen Sie die Shell

Users-MacBook-Pro:csv1 Admin$ mongo
Tarun Gupta
quelle
2

Überprüfen Sie auch, ob Ihre Root-Partition über genügend Speicherplatz verfügt, um mongod zu starten.

df -h /

Beim Start von Mongod sehen Sie Folgendes:

Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 12 17:02:59.159 dbexit: 
Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...
DmitrySandalov
quelle
1

Versuchen Sie unter Ubuntu Folgendes:

sudo invoke-rc.d mongodb start
Sieger
quelle
1

Dies kann eine Kombination aus $ PATH und Berechtigungsproblem sein.

Versuchen Sie die folgenden Schritte:

Aktualisieren Sie Ihre $ PATH-Variable so, dass sie auf Ihre MongoDB-Bin-Datei verweist. In meinem Fall installiere Brew MongoDB in diesem Ordner:

/usr/local/Cellar/mongodb/2.4.6/

Gehen Sie wie folgt vor, um Ihre Variable $ PATH zu aktualisieren:

$ sudo vi /etc/paths

Drücken Sie dann 'i', um Text in Vi einzufügen, und hängen Sie den MongoDB-Pfad an das Ende der 'path'-Datei an und starten Sie das Terminal neu.

/usr/local/Cellar/mongodb/2.4.6/bin

Verwenden Sie 'Esc: w q', um den Vi-Editor zu speichern und zu verlassen.

Verwenden Sie echo, um Ihre Pfadvariable anzuzeigen:

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin

Versuchen Sie nun, die Mongo-Version zu überprüfen. Wenn Sie folgen, sind Sie auf dem richtigen Weg!

$ mongo --version
MongoDB shell version: 2.4.6

Jetzt müssen wir das Datenbankverzeichnis erstellen. Ich habe den in MongoDB-Dokumenten vorgeschlagenen Standardspeicherort '/ data / db' verwendet. Ich habe auch ein Protokollverzeichnis erstellt, um Berechtigungsprobleme zu vermeiden, während Mongo versucht, Protokolle zu erstellen. Ändern Sie den Besitzer und das wird den Job machen.

$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data

Jetzt erstellen wir eine Standardkonfigurationsdatei für MongoDB, die zum ersten Mal bereitgestellt wird, wenn wir den Befehl 'mongod' ausführen. Jetzt möchte ich auch darauf hinweisen, dass 'mongod' einen Dienst startet, der auf eingehende Datenverbindungen wartet. Dies ist ähnlich, wenn '$ service mysqld start' ausgeführt wird. Lassen Sie uns fortfahren und die Konfigurationsdatei erstellen. Bitte beachten Sie, dass ich eine sehr einfache Konfigurationsdatei erstellt habe. Sie können jedoch viele andere Variablen hinzufügen, um MongoDB zu konfigurieren. Dies ist das erste Mal, dass ich mit MongoDB spiele, also weiß ich genau so viel, wie ich in MongoDB-Dokumenten gelesen habe! Ich habe 'mongodb.conf' erstellt.

$ sudo vi /etc/mongodb.conf

Fügen Sie Folgendes hinzu:

fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true

Beachten Sie, dass der Standardport für den MongoDB-Server 27017 ist. Verwenden Sie Ihren eigenen Pfad für den Datenbank- und Protokollpfad, den Sie in Schritt 5 erstellt haben. Vergessen Sie nicht, die conf-Datei zu schließen und zu speichern.

Jetzt können wir unseren MongoDB-Dienst starten. Öffnen Sie zwei Instanzen von Terminal. Geben Sie in Terminal 1 Folgendes ein:

$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting

Wenn Sie die obige Meldung erhalten, wissen Sie, dass Sie Ihren Mongod-Dienst erfolgreich gestartet haben.

Um eine Verbindung herzustellen, geben Sie in Terminal 2 Folgendes ein:

$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

Ignorieren Sie die Warnungen, aber Sie sind erfolgreich mit der 'Test'-Datenbank verbunden! Cool!

Das ist alles. Ich habe diese Lösung angewendet, als ich zum ersten Mal versuchte, eine Kopie von MongoDB auf meinem Mac zu installieren. Sehen Sie, ob dies auch Ihnen hilft.

Ausführliche Informationen finden Sie hier - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

Ich hoffe, es hilft!

Prost, Chinmay

Chinmay
quelle
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert.
Radim Köhler
@ RadimKöhler, danke für Heads Up. Ich habe die Antwort korrigiert. Hoffe das wird jemandem helfen. Prost.
Chinmay
1

Ich habe dieses Problem unter Ubuntu 12.04 durch die folgenden Schritte gelöst:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Ich habe mongo entfernt und dann erneut installiert.
4) sudo service mongodb restart

und alles ist gut

Almas
quelle