Mongodb Local Server kann nicht gestartet werden


167

Ich bin neu in Mongodb. Als ich versuchte, den lokalen Mongodb-Server mit dem mongodBefehl auszuführen, konnte er nicht ausgeführt werden und warf diesen Fehler aus.

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

Ich habe versucht, eine mongod.lockDatei zu löschen ... Ich bin gelaufen mongod --repair. Ich habe auch die Berechtigungen für mongod.lockDatei geändert .

aber nichts scheint zu funktionieren .. es zeigt immer den gleichen Fehler .. was soll ich tun?

Ich habe auch Git Version 1.7.4.1 installiert, aber es zeigt fehlerhafte Nogitversion.


Ich hatte das gleiche Problem und diese Lösung funktionierte für mich stackoverflow.com/questions/5798549/…
Eddie

Antworten:


176

Versuchen:

sudo service mongod stop
sudo mongod

So beenden Sie den aktuellen aktiven Mongodb-Dienst, dass Sie einen neuen starten können


1
Ich habe auch die Servicemeldung erhalten, aber ich habe beschlossen, sie zu ignorieren und erneut mit "sudo mongod" zu starten, und nachdem sie endlich funktioniert hat
kpierce8

2
Sollte das nicht Mongod sein (nicht Mongodb)? Basierend auf docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/…
xavier

5
sudo service mongodb stoparbeitete für mich unter Ubuntu 14.10.
Joe Corneli

1
Unter OS X gibt es keinen Servicebefehl. Wenn Sie Mongo über Homebrew installiert haben, können Sie es verwenden brew services. (via unix.stackexchange.com/questions/155715/… )
Charlie Stanard

1
@ HarshaMV `Brew Services Stop <Formel>`
Jacob

149

Beenden Sie den Prozess nicht mit dem -9-Signal, da dies zu Schäden führen würde: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Verwenden Sie sudo killall -15 mongodstattdessen


2
Dies beantwortet nicht die ursprüngliche Frage.
Beau Grantham

8
killall mongodmacht das gleiche auch. Das -15sagt killall, dass ein SIGTERM-Signal gesendet werden soll, was standardmäßig der Fall ist.
T Blank

4
Eigentlich hat es für mich funktioniert, einen Killall zu machen, anstatt zu versuchen, den Dienst zu beenden. Also, obwohl es die Fragen nicht beantwortet. Das war nützlich
André Pena

59

Andreas Jung:

"Sat Jun 25 09:38:51 [initandlisten] listen (): bind () fehlgeschlagen errno: 98 Adresse bereits für Socket verwendet: 0.0.0.0:27017

spricht selbst.

Eine andere Instanz von mongod wird bereits ausgeführt und weist den MongoDB-Standardport 27017 zu.

Beenden Sie entweder den anderen Prozess oder verwenden Sie einen anderen Port. "

Geben Sie in diesem Fall den folgenden Befehl ein

ps wuax | grep mongo

Sie sollten etwas sehen, das so aussieht

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

Geben Sie nun den Befehl kill für die Mongod-Instanz ein (in diesem Fall 31936):

kill 31936

29

Sa Jun 25 09:38:51 [initandlisten] listen (): bind () fehlgeschlagen errno: 98 Adresse bereits für Socket verwendet: 0.0.0.0:27017

spricht selbst.

Eine andere Instanz von mongod wird bereits ausgeführt und weist den MongoDB-Standardport 27017 zu.

Beenden Sie entweder den anderen Prozess oder verwenden Sie einen anderen Port.


47
Fand dies auf der Seite "Erste Schritte" ... ** Wenn mongodb ** über aptitude installiert ist, wird es bereits ausgeführt (im Beispiel müssen Sie es also nicht starten). Dann tippe einfach: $ mongo .. da ich persönlich nicht mit mongod angefangen habe und dem Schnellstart-Tutorial gefolgt bin .. ich wusste nicht, dass es bereits läuft ...
sakthig

@Sakti: Ja, es läuft schon für mich! Ich denke, ich habe über Eignung getan. Vielen Dank!
sk8terboi87

29

Finden Sie von netstat heraus, auf welchem ​​Prozess der Mongodb-Port ausgeführt wird (27017).

Befehl:

sudo netstat -tulpn | grep :27017

Ausgabe wird sein:

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

In meinem Fall ist "6432" die PID, in Ihrem Fall kann es anders sein. Beenden Sie diesen Vorgang dann mit dem folgenden Befehl:

sudo kill <pid>

Das ist es!


25

Verwenden:

sudo killall mongod

Der Server wird gestoppt.

Starten Sie dann neu mongoddurch:

sudo service mongod restart

es sollte funktionieren.


23

Sie haben bereits einen Prozess ausgeführt. Sie können es mit dem Befehl töten:

killall mongod

15

Sie möchten tun, killall -15 mongodweil es noch läuft : Address already in use for socket: 0.0.0.0:27017.

Dann kannst du mongodwieder rennen .


Warum nicht einfach killall mongod?
Dmitri Zaitsev

1
No matching processes belonging to you were found
Retrovertigo

Dann darf Mongod kein laufender Prozess sein. Vielleicht wird die Adresse von einem anderen Prozess verwendet
John Ottenlips

7

Versuchen Sie es mit einem anderen Port, wenn Sie derzeit keine laufenden Prozesse finden oder das Beenden nicht funktioniert. Versuchen Sie beispielsweise 27018, da der Standardwert 27017 ist.

mongod  --port 27018

Ich fand das mit dem Befehl heraus, mongod --help


7

Ich schlage stattdessen vor:

$sudo service mongodb stop

Das könnte funktionieren.


6

Versuchen Sie es mit killall -15 mongod / killall mongod. Auch danach entfernen Sie den Datenbankspeicherordner, indem Sie die folgenden Befehle eingeben: sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Activity Monitor , suchen Sie nach Mongod , kreuzen Sie es. dann wieder mongod laufen. Problem gelöst.


OP gibt das Betriebssystem nicht an, aber die Protokolldateien bezeichnen eindeutig Linux.
Nic Nilov

4

Öffnen Sie das Terminal und geben Sie Folgendes ein:

mkdir -p /data/db

Dann geben Sie ein:

mongod

3

Ich hatte das gleiche Problem, als ich versuchte, eine neue Instanz von Mongod zu öffnen, und es wurde angegeben, dass sie bereits ausgeführt wurde.

Ich habe die Dokumente überprüft und es wurde gesagt, dass ich tippen soll

mongo
use admin
db.shutdownServer()

3

MongoDB kann nicht gestartet werden, was hauptsächlich auf ein unsauberes Herunterfahren zurückzuführen ist. Um dies zu beheben, löschen Sie die Datei mongod.lock. Diese Datei befindet sich im Datenordner.

Finden Sie heraus, wo sich Ihr Datenordner befindet, indem Sie in der Datei mongodb.conf oder mongod.conf nachsehen. (Conf-Datei unter / etc auf Linux-Systemen.)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

Bei Verwendung der obigen Konfiguration befindet sich die Datei beispielsweise unter /var/lib/mongodb/mongod.lock. Entfernen Sie es einfach und starten Sie mongodb neu.


1
Dies ist mir mehr als einmal passiert, insbesondere auf Cloud-Servern, die "hart zurückgesetzt" wurden, wenn sie nicht reagierten. Es ist eine einfache Lösung und sollte eine Top-Antwort sein.
SevakPrime

2

Ich habe das gleiche Problem konfrontiert. Obwohl der mongodbDienst nicht ausgeführt wird, wurde im Protokoll die address already in useMeldung angezeigt.

 $netstat -tulpn | grep :27017 

gibt nichts zurück

Bei weiterer Analyse wurde festgestellt, dass das Problem auf eine Sperrdatei zurückzuführen war. Der Dienst läuft einwandfrei, nachdem die Sperrdatei gelöscht und neu gestartet wurde.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start

2

Suchen Sie unter /var/log/mongodb/mongod.log nach Protokollen und versuchen Sie, den Fehler abzuleiten. In meinem Fall war es

Fehler beim Aufheben der Verknüpfung der Socket-Datei /tmp/mongodb-27017.sock errno: 1 Vorgang nicht zulässig

/Tmp/mongodb-27017.sock gelöscht und es hat funktioniert.


1

Versuchen

/usr/lib/mongodb/mongod.exe --dbpath c: data \ db

--dbpath (sollte vom Pfad Ihrer Datenbank gefolgt werden)


1

Möglicherweise läuft der Server bereits. Bitte überprüfen Sie, ob der Befehl mongo funktioniert oder nicht.


1

Um das Problem in Windows zu beheben , funktionieren die folgenden Schritte für mich:

Zum Beispiel ist mongoDB Version 3.6 installiert und der Installationspfad von MongoDB lautet "D: \ Programme \ MongoDB".

Erstellen Sie den Ordner D: \ mongodb \ logs und erstellen Sie dann die Datei mongodb.log in diesem Ordner.

Führen Sie cmd.exe als Administrator aus .

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

Entfernen Sie diese beiden Dateien mongod.lockund storage.bsonunter dem Ordner "D: \ mongodb \ data".

net start MongoDBGeben Sie dann das Cmd mit Administratorrechten ein. Das Problem wird behoben.


0

Es zeigt den Fehler listen (): bind () fehlgeschlagen errno: 98 Adresse, die bereits für Socket verwendet wird: 0.0.0.0:27017 dh 27017-Adresse wird bereits von einem anderen Dienst verwendet. Bitte überprüfen Sie dies mit dem Befehl "netstat -apt | grep" 27017 ""


0

(Wenn Sie Linux verwenden) if

mongod --shutdown --config=path/to/your/configFile.conf 

oder

mongod --repair --config=path/to/your/configFile.conf 

Das Problem wurde nicht behoben. Abmelden und erneut anmelden . Das hat mein Problem gelöst.

Oder Sie können den Prozess manuell vom Terminal aus beenden, denke ich.


0

Es sieht so aus, als würde der gleiche Fehler in den Protokollen angezeigt, wenn die Umgebungseinstellung LC_ALL fehlt. Es ist verwirrend, aber Sie können den mongoClient ausführen, um festzustellen, dass es sich um ein Problem handelt.


0

Wenn Sie Mongo zum ersten Mal ausführen, möchten Sie möglicherweise zuerst den Pfad festlegen

mongod --dbpath <path to the directory>

0

Der Tötungsprozess hat mein Problem nicht gelöst. Mein Mac war abgestürzt und beim Neustart waren einige Sperrdateien (mongod.lock, WiredTiger.lock) in mongo dbPath vorhanden. Ich habe diese Dateien in einen anderen Ordner verschoben (ich habe sie nicht gelöscht, um weitere Probleme zu vermeiden) und dann hat es funktioniert. Bei erfolgreichem Stern habe ich die verschobenen Sperrdateien gelöscht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.