Impossibile connettersi al server 127.0.0.1 shell / mongo.js


88

quando installo mongodb nel mio ubuntu, provo: ./mongo mostra questo errore:

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

Quindi cosa posso fare ,

Grazie


Come l'hai installato? Hai usato un'attitudine? Hai scaricato direttamente il tarbal?
Bryan Migliorisi

1
ho avuto questo errore ed è stato perché su Ubuntu non ho eseguito per mongodprimo
Connor Leech

Risposte:


124
  • Rimuovere manualmente il file di blocco: sudo rm /var/lib/mongodb/mongod.lock
  • Esegui lo script di riparazione: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Si prega di notare quanto segue:

  • È necessario eseguire questo comando come utente mongodb. Se lo esegui come root, allora root avrà i file in / var / lib / mongodb / necessari per eseguire il demone mongodb e quindi quando il demone tenterà di essere eseguito in seguito come utente mongodb, non avrà i permessi per avviarsi . In tal caso riceverai questo errore: Impossibile creare / aprire il file di blocco per lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 Permission denied, terminating.
  • Su Ubuntu, è necessario specificare il file di configurazione /etc/mongodb.conf utilizzando il flag -f. Altrimenti cercherà i file di dati nel posto sbagliato e vedrai il seguente errore: dbpath (/ data / db /) non esiste, terminando.

Ottimo collegamento. Ha risolto esattamente il problema.
Jaketrent

2
come eseguirlo come utente mongodb?
user4951

Aggiungi semplicemente te stesso al gruppo mongodb: useradd -G mongodb fady sostituisci fady con il tuo nome utente.
fady mohamed osman

Ho eseguito la riparazione molte volte ma non ha funzionato finché non ho rimosso manualmente il file .lock (come hai affermato), ora funziona, ma voglio solo sapere perché la rimozione manuale del file .lock funziona?
Shahzeb Khan

2
Ho dovuto usare sia le informazioni di questa risposta che quelle di @boulder_ruby. Questo perché mancava il mio "/ data / db /". Forse potrebbe essere un buon aggiornamento affinché questa risposta sia più completa.
Fabricio Buzeto

32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Ecco tutto, a volte, ci vuole un po 'di tempo per avviare mongo dopo aver eseguito queste operazioni.


Se provo `sudo -u mongodb mongod -f /etc/mongodb.conf --repair` ecco cosa ottengo:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus

21

Sto cercando di eseguire $ mongod

Se ricevi un errore come

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

Quindi ti sei imbattuto in un errore di avvio di base che è piuttosto comune.

Per impostazione predefinita, mongod proverà a utilizzare / data / db per i suoi file di database, che in questo caso non esiste.

Non puoi iniziare

mongo 

finché non lo gestisci

mongod.

Prova a creare quelle directory e assicurati che siano scrivibili dallo stesso utente che esegue il processo mongod.

** Vedi domanda simile-- Ricezione di un errore, "Errore: impossibile connettersi al server 127.0.0.1 shell / mongo.js" e quando si tenta di eseguire mongodb su mac osx lion


puoi anche impostare il dbpath in questo modo: mongod --dbpath ../data
cbaigorri

20

Questo in realtà nonèun errore ... Quello che succede quièche Mongo si affida a un demone per eseguire il server di database locale, quindi per " attivare " il server mongo nella tua shell, devi avviare il servizio mongo primo.

Per Fedora Linux (che è il Distro che uso) devi eseguire questi comandi:

1 sudo service mongod start
2 mongo

E il gioco è fatto! il server verrà eseguito. Ora, se vuoi che il servizio Mongo venga avviato all'avvio del sistema, devi eseguire:

sudo chkconfig --levels 235 mongod on

E questo è tutto! Se lo fai, ora nella shell devi solo digitare mongo per avviare il server ma è praticamente tutto, il problema è che devi prima avviare il SERVICE e poi il SERVER :)

PS I comandi che ho postato potrebbero funzionare anche su altre distribuzioni Linux, non solo in fedora ... In caso contrario forse devi modificare alcune parole a seconda della distribuzione che stai usando;)


Stessa soluzione si applica alla domanda: stackoverflow.com/questions/7958228/...
Jmlevick

Tante volte rimango perplesso e mi gratto la testa per molto tempo, e alla fine mi rendo conto: "oh, devo solo sudo."
ben autore

2
e per le varianti Debian / Ubuntu: sudo service mongodb start
ljs.dev

11

Ho avuto lo stesso problema quando ho provato a installare mongo. Ho ricevuto un errore come,

Errore

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

Soluzione:

Prima installa mongod usando:

sudo apt-get install mongodb-server

Quindi digita

mongod --dbpath /mongo/db

Poi

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

Poi

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

Grazie


Questo metodo eliminerà i database esistenti in mongo?
Evan

6

Devi eliminare il file di blocco mongod.locko /var/lib/mongodb/mongod.locksu Ubuntu, quindi devi prima eseguire mongod.exeo service mongodb startsu Ubuntu, quindi eseguire mongo.exeo mongosu Ubuntu.


L'OP è su Ubuntu, quindi sono abbastanza sicuro che non useranno alcun .exefile.
io_e il

Ricevo questo messaggio di errore e non riesco a trovare un "mongod.lock" sul mio file system. Queste istruzioni si applicano a Mac OSX?
boulder_ruby

5

O il tuo mongod non è in esecuzione (controlla usando il comando "ps") o è in ascolto su qualche indirizzo IP esterno e non su localhost. Quindi controlla prima l'elenco dei processi se "mongod" è in esecuzione. Se sì, controlla con "netstat -nap" per la porta correlata.

Ovviamente puoi avviare mongod sulla console manualmente o anche guardare nel file di log di mongod (se ce n'è uno configurato ... a seconda di come hai installato mongod).


5

Per prima cosa devi assicurarti che tutti i file e le directory nella tua cartella / var / lib / mongodb / (o qualsiasi cartella a cui punta dbpath) appartengano all'utente mongodb e al gruppo mongodb.

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

(Sostituisci nome file e directory con i rispettivi nomi)

Quindi puoi rimuovere il blocco, riparare il database e riavviare il demone come altre persone hanno già menzionato:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Come mai non ci sono voti positivi per questo? Questa era l'unica soluzione, tra una mezza dozzina di voci SO che ho cercato, che ha funzionato per me. Grazie Signore.
FRD

Il comando per iniziare con il file di configurazione e forzare una riparazione è sudo -u mongodb mongod -f /etc/mongod.conf --repairsu Ubuntu 14.
okoboko

5

Per prima cosa avvia il tuo server mongo da

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

Quindi apri un'altra finestra di terminale e apri la shell

Users-MacBook-Pro:csv1 Admin$ mongo

2

Controlla anche che la tua partizione di root abbia abbastanza spazio per avviare mongod.

df -h /

Vedrai qualcosa di simile al lancio di mongod:

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...


1

Potrebbe essere una combinazione di $ PATH e problema di autorizzazione.

Prova a seguire i passaggi indicati di seguito:

Aggiorna la tua variabile $ PATH in modo che punti al tuo file bin MongoDB. Nel mio caso brew installa MongoDB in questa cartella:

/usr/local/Cellar/mongodb/2.4.6/

Per aggiornare la tua variabile $ PATH, procedi come segue:

$ sudo vi /etc/paths

Quindi, premi "i" per inserire il testo in Vi e aggiungi il percorso di MongoDB alla fine del file "percorsi" e riavvia il terminale.

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

Usa 'Esc: w q' per salvare e uscire dall'editor Vi.

Usa l'eco per visualizzare la tua variabile di percorso:

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

Ora prova a controllare la versione Mongo, se segui, sei sulla strada giusta!

$ mongo --version
MongoDB shell version: 2.4.6

Ora dobbiamo creare la directory del database. Ho usato la posizione predefinita "/ data / db" suggerita nei documenti di MongoDB. Ho anche creato una directory di log per evitare problemi di autorizzazione mentre Mongo cerca di creare log. Cambia proprietà e questo farà il lavoro.

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

Ora creeremo un file di configurazione predefinito per MongoDB da fornire per la prima volta che eseguiremo il comando "mongod". Ora, vorrei anche sottolineare che "mongod" avvierà un servizio, che ascolterà le connessioni dati in entrata. È simile se viene eseguito '$ service mysqld start'. Andiamo avanti e creiamo il file di configurazione. Tieni presente che ho creato un file di configurazione molto semplice. Tuttavia, puoi aggiungere molte altre variabili per configurare MongoDB. Questa è la prima volta che gioco con MongoDB, quindi so quanto leggo sui documenti di MongoDB! Ho creato "mongodb.conf".

$ sudo vi /etc/mongodb.conf

Aggiungi quanto segue:

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

Nota che la porta predefinita per il server MongoDB è 27017. Usa il tuo percorso per dbpath e logpath creato nel passaggio 5. Non dimenticare di chiudere e salvare il file di configurazione.

Ora siamo tutti pronti per avviare il nostro servizio MongoDB. Apri due istanze di Terminal.In Terminal 1, digita:

$ 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

Se ricevi il messaggio sopra, sappi che hai avviato correttamente il tuo servizio Mongod.

Ora, per connetterti ad esso, nel Terminal 2 digita quanto segue:

$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
>

Ignora gli avvisi, ma sei connesso con successo al database "test"! Freddo!

È tutto. Ho applicato questa soluzione, quando ho provato a installare una copia di MongoDB sul mio Mac per la prima volta. Vedi se questo aiuta anche te.

Per un post dettagliato puoi andare qui - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

Spero possa essere d'aiuto!

Salute, Chinmay


Sebbene questo collegamento possa rispondere alla domanda, è meglio includere le parti essenziali della risposta qui e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.
Radim Köhler

@ RadimKöhler, grazie per l'avviso. Ho corretto la risposta. Spero che questo possa aiutare qualcuno. Saluti.
Chinmay

1

Ho risolto questo problema su Ubuntu 12.04 seguendo i seguenti passaggi:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Ho rimosso mongo e poi l'ho installato di nuovo
4) sudo service mongodb restart

e va tutto bene

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.