impossibile avviare il server locale mongodb


167

Sono nuovo di mongodb .. quando ho provato a eseguire il server locale mongodb con mongodcomando non è riuscito a eseguire e ho generato questo errore ..

/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

Ho provato a cancellare il mongod.lockfile ... Ho funzionato mongod --repair.. Ho anche cambiato i permessi del mongod.lockfile.

ma nulla sembra funzionare .. continua a mostrare lo stesso errore .. cosa devo fare.?

Ho anche installato git versione 1.7.4.1 ma mostra nogitversion in errore.


Ho avuto lo stesso problema e questa soluzione ha funzionato per me stackoverflow.com/questions/5798549/…
Eddie,

Risposte:


176

Provare:

sudo service mongod stop
sudo mongod

Per interrompere il servizio mongodb attivo corrente, consentendoti quindi di avviarne uno nuovo


1
ho anche ricevuto il messaggio di servizio ma ho deciso di ignorarlo e provare a riavviare di nuovo con "sudo mongod" e dopo che alla fine ha funzionato
kpierce8,

2
Questo non dovrebbe essere mongod (non mongodb)? Basato su docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/…
xavier

5
sudo service mongodb stopha funzionato per me su Ubuntu 14.10.
Joe Corneli,

1
Non esiste alcun comando di servizio su OS X. Se hai installato mongo tramite homebrew puoi usarlo brew services. (via unix.stackexchange.com/questions/155715/… )
Charlie Stanard

1
@HarshaMV `brew services stop <formula>`
Jacob,

149

Non interrompere il processo utilizzando il segnale -9 poiché potrebbe causare danni: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Usa sudo killall -15 mongodinvece


2
Questo non risponde alla domanda originale.
Beau Grantham,

8
killall mongodfa anche la stessa cosa. la -15dice killallper inviare un segnale SIGTERM, che lo fa di default.
T Blank

4
Effettivamente fare un killall ha funzionato per me invece di provare a fermare il servizio. Quindi, anche se non risponde alle domande. È stato utile
André Pena il

59

Andreas Jung:

"Sab 25 giu 09:38:51 [initandlisten] hear (): bind () errno errno: 98 Indirizzo già in uso per socket: 0.0.0.0:27017

parla da solo.

Un'altra istanza di mongod è già in esecuzione e alloca la porta predefinita MongoDB che è 27017.

O uccidere l'altro processo o utilizzare una porta diversa. "

In questo caso, digitare il comando seguente

ps wuax | grep mongo

Dovresti vedere qualcosa che assomiglia a questo

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

Ora inserisci il comando kill per l'istanza mongod (31936 in questo caso):

kill 31936

29

Sab 25 giu 09:38:51 [initandlisten] hear (): bind () errno errno: 98 Indirizzo già in uso per socket: 0.0.0.0:27017

parla da solo.

Un'altra istanza di mongod è già in esecuzione e alloca la porta predefinita MongoDB che è 27017.

O uccidere l'altro processo o utilizzare una porta diversa.


47
Trovato questo nella pagina iniziale ... ** Quando mongodb ** è installato tramite aptitude è già in esecuzione (quindi nell'esempio non è necessario avviarlo). Quindi digita: $ mongo .. dato che personalmente non ho avviato mongod e stavo seguendo il tutorial di avvio rapido ... non sapevo che fosse già in esecuzione ...
novembre

@Sakti: Sì, è già in esecuzione per me! Immagino di averlo fatto tramite attitudine. Grazie!
sk8terboi87 ツ

29

Scopri da netstat quale processo esegue la porta mongodb (27017)

comando:

sudo netstat -tulpn | grep :27017

L'output sarà:

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

Nel mio caso "6432" è il pid, potrebbe essere diverso nel tuo caso. Quindi uccidi quel processo usando il seguente comando:

sudo kill <pid>

Questo è tutto!


25

Uso:

sudo killall mongod

Arresterà il server.

Quindi riavviare mongod:

sudo service mongod restart

dovrebbe funzionare.


23

Hai già un processo in esecuzione. Puoi ucciderlo con il comando:

killall mongod

15

Si vuole fare killall -15 mongodperché è ancora in esecuzione: Address already in use for socket: 0.0.0.0:27017.

Quindi puoi correre di mongodnuovo.


Perché non semplicemente killall mongod?
Dmitri Zaitsev il

1
No matching processes belonging to you were found
retrovertigo,

Quindi mongod non deve essere un processo in esecuzione. Forse l'indirizzo viene utilizzato da un altro processo
John Ottenlips

7

Prova una porta diversa se non riesci a trovare alcun processo in esecuzione o ucciderli non funziona. Ad esempio, prova 27018 perché l'impostazione predefinita è 27017.

mongod  --port 27018

L'ho scoperto con il comando, mongod --help


7

Suggerisco invece di usare:

$sudo service mongodb stop

Potrebbe funzionare.


6

Prova killall -15 mongod / killall mongod Anche dopo questo, se questo non funziona, rimuovi la cartella di archiviazione db digitando i seguenti comandi sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Activity Monitor , cerca mongod , attraversalo. poi corri di nuovo mongod. problema risolto.


OP non specifica il sistema operativo, ma i file di registro indicano chiaramente Linux.
Nic Nilov,

4

Apri il terminale e digita:

mkdir -p /data/db

Quindi inserire:

mongod

3

Ho avuto lo stesso problema se provassi ad aprire una nuova istanza di mongod e diceva che era già in esecuzione.

Ho controllato i documenti e mi ha detto di digitare

mongo
use admin
db.shutdownServer()

3

MongoDB non in grado di avviarsi è principalmente dovuto allo spegnimento impuro. Per rimediare, eliminare il file mongod.lock. Questo file si trova nella cartella dei dati.

Scopri dove si trova la tua cartella di dati cercando nel file mongodb.conf o mongod.conf. (File di configurazione in / etc su sistemi Linux.)

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

Ad esempio, utilizzando la configurazione precedente, il file è in /var/lib/mongodb/mongod.lock. Basta rimuoverlo e riavviare mongodb.


1
Questo mi è successo più di una volta, specialmente su server cloud che sono stati "ripristinati" quando non rispondono. È una soluzione semplice e dovrebbe essere la risposta migliore.
SevakPrime

2

Ho affrontato lo stesso problema. Sebbene il mongodbservizio non sia in esecuzione, il registro mostrava un address already in usemessaggio.

 $netstat -tulpn | grep :27017 

non restituisce nulla

Ulteriori analisi hanno rilevato che il problema era dovuto al file di blocco. Il servizio funziona correttamente, dopo aver eliminato il file di blocco e averlo riavviato.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

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

$service mongod start

2

Controllare i log in /var/log/mongodb/mongod.log e provare a dedurre l'errore. Nel mio caso lo era

Impossibile scollegare il file socket /tmp/mongodb-27017.sock errno: 1 Operazione non consentita

Eliminato /tmp/mongodb-27017.sock e ha funzionato.


1

provare

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

--dbpath (dovrebbe essere seguito dal percorso del tuo db)


1

È possibile che il server sia già in esecuzione. Si prega di controllare con il comando mongo funziona o no.


1

Per risolvere il problema in Windows , i seguenti passaggi funzionano per me:

Ad esempio mongoDB versione 3.6 è installato e il percorso di installazione di MongoDB è "D: \ Programmi \ MongoDB".

Crea la cartella D: \ mongodb \ logs, quindi crea il file mongodb.log all'interno di questa cartella.

Esegui cmd.exe come amministratore ,

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

Rimuovere questi due file mongod.locke storage.bsonnella cartella "D: \ mongodb \ data".

Quindi digitare net start MongoDBil cmd utilizzando il privilegio di amministratore, il problema verrà risolto.


0

Mostra errore hear (): bind () non riuscito errno: 98 Indirizzo già in uso per socket: 0.0.0.0:27017 ovvero 27017 indirizzo è già utilizzato da qualche altro servizio. controlla questo con il comando "netstat -apt | grep" 27017 ""


0

(Se stai usando Linux,) se

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

o

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

non risolto il problema, disconnettersi e riconnettersi . Ciò ha risolto il mio problema.

Oppure puoi interrompere manualmente il processo dal terminale, immagino.


0

Sembra che lo stesso errore sia mostrato nei registri quando ti manca l'impostazione dell'ambiente LC_ALL. È confuso, ma è possibile eseguire il mongoclient per vedere che è un problema.


0

se stai eseguendo mongo per la prima volta, potresti voler impostare prima il percorso

mongod --dbpath <path to the directory>

0

Il processo di uccisione non ha risolto il mio problema. Il mio mac si è arrestato in modo anomalo e al riavvio alcuni file di blocco (mongod.lock, WiredTiger.lock) erano presenti in mongo dbPath. Ho spostato questi file in un'altra cartella (non ho eliminato per evitare ulteriori problemi) e poi ha funzionato. Su Successul Star, ho eliminato i file di blocco spostati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.