no se pudo conectar al servidor 127.0.0.1 shell / mongo.js

88

cuando configuro mongodb en mi ubuntu, intento: ./mongo muestra este error:

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

entonces Que puedo hacer ,

Gracias

zjm1126
fuente
¿Cómo lo instalaste? ¿Usaste una aptitud? ¿Descargaste el tarbal directamente?
Bryan Migliorisi
1
Tuve este error y fue porque en ubuntu no ejecuté mongodprimero
Connor Leech

Respuestas:

124
  • Elimine manualmente el archivo de bloqueo: sudo rm /var/lib/mongodb/mongod.lock
  • Ejecute el script de reparación: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Tenga en cuenta lo siguiente:

  • Debe ejecutar este comando como usuario mongodb. Si lo ejecuta como root, root tendrá los archivos en / var / lib / mongodb / que son necesarios para ejecutar el demonio mongodb y, por lo tanto, cuando el demonio intente ejecutarse más tarde como usuario mongodb, no tendrá permisos para iniciarse. . En ese caso, obtendrá este error: No se puede crear / abrir el archivo de bloqueo para lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 Permiso denegado, terminando.
  • En Ubuntu, debe especificar el archivo de configuración /etc/mongodb.conf usando el indicador -f. De lo contrario, buscará los archivos de datos en el lugar incorrecto y verá el siguiente error: dbpath (/ data / db /) no existe, terminando.
fady mohamed osman
fuente
Gran enlace. Resolvió el problema exactamente.
jaketrent
1
La respuesta está arriba ahora.
fady mohamed osman
2
¿Cómo ejecutar eso como usuario de mongodb?
user4951
Simplemente agréguese al grupo mongodb: useradd -G mongodb fady reemplace fady con su nombre de usuario.
fady mohamed osman
2
Tuve que usar tanto la información de esta respuesta como la de @boulder_ruby. Esto porque faltaba mi '/ data / db /'. Quizás podría ser una buena actualización para que esta respuesta sea más completa.
Fabricio Buzeto
32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Aquí está todo, a veces, se necesita un poco de tiempo para iniciar mongo después de realizar estas operaciones.

Rubyrider
fuente
Si intento `sudo -u mongodb mongod -f /etc/mongodb.conf --repair`, esto es lo que obtengo:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus
21

Intentando correr $ mongod

Si obtiene un error como

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

Entonces se ha encontrado con un error de inicio básico que es bastante común.

De forma predeterminada, mongod intentará usar / data / db para sus archivos de base de datos, que en este caso no existe.

No puedes empezar

mongo 

hasta que manejes

mongod.

Intente crear esos directorios y asegúrese de que el mismo usuario que ejecuta el proceso mongod pueda escribirlos.

** Ver pregunta similar : aparece un error, "Error: no se pudo conectar al servidor 127.0.0.1 shell / mongo.js" y al intentar ejecutar mongodb en mac osx lion

boulder_ruby
fuente
también puede configurar el dbpath así: mongod --dbpath ../data
cbaigorri
20

En realidad, esto no es un error ... Lo que sucede aquí es que Mongo se basa en un demonio para ejecutar el servidor de base de datos local, por lo que para "encender" el servidor mongo en su shell, debe iniciar el servicio mongo primero.

Para Fedora Linux (que es la distribución que uso), debe ejecutar estos comandos:

1 sudo service mongod start
2 mongo

¡Y ahí lo tienes! el servidor se va a ejecutar. Ahora, si desea que el servicio Mongo se inicie cuando se inicie el sistema, debe ejecutar:

sudo chkconfig --levels 235 mongod on

¡Y eso es todo! Si hace eso, ahora en el shell solo tiene que escribir mongo para iniciar el servidor, pero eso es todo, el problema es que primero debe iniciar el SERVICIO y luego el SERVIDOR :)

PD: Los comandos que publiqué también podrían funcionar en otras distribuciones de Linux, no solo en Fedora ... En caso de que no, quizás tengas que modificar algunas palabras dependiendo de la distribución que estés usando;)

Jmlevick
fuente
La misma solución se aplica a la pregunta: stackoverflow.com/questions/7958228/…
Jmlevick
Tantas veces me sabe cómo continuar y rascarme la cabeza durante mucho tiempo, y finalmente se dan cuenta: 'Oh, sólo tienen que sudo ".
ben autor
2
y para variantes de Debian / Ubuntu: sudo service mongodb start
ljs.dev
11

Tuve el mismo problema cuando intenté instalar mongo. Tengo un error como,

Error

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

Solución:

Primero instale mongod usando:

sudo apt-get install mongodb-server

Luego escribe

mongod --dbpath /mongo/db

Entonces

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

Entonces

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

Gracias

Samarth P Shenoy
fuente
¿Este método eliminará las bases de datos existentes en mongo?
Evan
6

Debe eliminar el archivo de bloqueo mongod.locko /var/lib/mongodb/mongod.locken ubuntu, luego debe ejecutar mongod.exeo service mongodb starten ubuntu primero, luego ejecutar mongo.exeo mongoen ubuntu.

usuario1391225
fuente
El OP está en Ubuntu, así que estoy bastante seguro de que no usarán ningún .exearchivo.
yo_y
Recibo este mensaje de error y no puedo encontrar un "mongod.lock" en mi sistema de archivos. ¿Estas instrucciones se aplican a Mac OSX?
boulder_ruby
5

O su mongod no se está ejecutando (verifique usando el comando "ps") o está escuchando en alguna dirección IP externa y no en localhost. Así que primero verifique la lista de procesos si 'mongod' se está ejecutando. Si es así, verifique con "netstat -nap" para el puerto relacionado.

Por supuesto, puede iniciar mongod en la consola manualmente o incluso buscar en el archivo de registro de mongod (si hay uno configurado ... dependiendo de cómo haya instalado mongod).

Andreas Jung
fuente
5

Primero debe asegurarse de que todos los archivos y directorios en su carpeta / var / lib / mongodb / (o cualquier carpeta a la que apunte dbpath) pertenezcan al usuario mongodb y al grupo mongodb.

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

(Reemplace el nombre de archivo y directorio con sus respectivos nombres)

Luego puede eliminar el bloqueo, reparar la base de datos y reiniciar el demonio como otras personas ya mencionaron:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start
Tom Desair
fuente
¿Cómo es que no hay votos a favor de esto? Esta fue la única solución, entre media docena de entradas de SO que miré, que funcionó para mí. Gracias Señor.
FRD
El comando para comenzar con el archivo de configuración y forzar una reparación está sudo -u mongodb mongod -f /etc/mongod.conf --repairen Ubuntu 14.
okoboko
5

Primero inicie su servidor mongo por

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

Luego abre otra ventana de terminal y abre shell

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

También verifique que su partición raíz tenga suficiente espacio para iniciar mongod.

df -h /

Verá algo como esto en el lanzamiento de 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...
DmitrySandalov
fuente
1

En Ubuntu, intente esto:

sudo invoke-rc.d mongodb start
Víctor
fuente
1

Podría ser una combinación de $ PATH y un problema de permisos.

Intente seguir los pasos que se indican a continuación:

Actualice su variable $ PATH para que apunte a su archivo bin de MongoDB. En mi caso, brew instale MongoDB en esta carpeta:

/usr/local/Cellar/mongodb/2.4.6/

Para actualizar su variable $ PATH, haga lo siguiente:

$ sudo vi /etc/paths

Luego, presione 'i' para insertar texto en Vi y agregue la ruta de su MongoDB al final del archivo 'rutas' y reinicie el terminal.

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

Utilice 'Esc: w q' para guardar y salir del editor Vi.

Use echo para mostrar su variable de ruta:

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

Ahora intente verificar la versión de Mongo, si obtiene seguidores, ¡entonces está en el camino correcto!

$ mongo --version
MongoDB shell version: 2.4.6

Ahora necesitamos crear el directorio de la base de datos. Usé la ubicación predeterminada '/ data / db' sugerida en los documentos de MongoDB. También creé un directorio de registros para evitar problemas de permisos mientras Mongo intenta crear registros. Cambie de propietario y eso hará el trabajo.

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

Ahora, crearemos un archivo de configuración predeterminado para MongoDB que se proporcionará la primera vez que ejecutemos el comando 'mongod'. Ahora, también me gustaría señalar que 'mongod' iniciará un servicio, que escuchará las conexiones de datos entrantes. Esto es similar a ejecutar '$ service mysqld start'. Sigamos adelante y creemos el archivo de configuración. Tenga en cuenta que he creado un archivo de configuración muy básico. Sin embargo, puede agregar muchas otras variables para configurar MongoDB. Esta es la primera vez que juego con MongoDB, ¡así que sé todo lo que leo en los documentos de MongoDB! Creé 'mongodb.conf'.

$ sudo vi /etc/mongodb.conf

Agregue lo siguiente:

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

Tenga en cuenta que el puerto predeterminado para el servidor MongoDB es 27017. Utilice su propia ruta para dbpath y logpath que creó en el paso 5. No olvide cerrar y guardar el archivo conf.

Ahora estamos listos para iniciar nuestro servicio MongoDB. Abra dos instancias de Terminal En la Terminal 1, escriba:

$ 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

Si recibe el mensaje anterior, sepa que ha iniciado con éxito su servicio de Mongod.

Ahora, para conectarse a él, en la Terminal 2 escriba lo siguiente:

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

Ignore las advertencias, pero se ha conectado correctamente a la base de datos de 'prueba'. ¡Frio!

Eso es todo. Apliqué esta solución cuando intenté instalar una copia de MongoDB en mi Mac por primera vez. Vea si esto también le ayuda.

Para obtener una publicación detallada, puede ir aquí: http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

¡Espero que ayude!

Saludos, Chinmay

Chinmay
fuente
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden dejar de ser válidas si cambia la página enlazada.
Radim Köhler
@ RadimKöhler, gracias por avisar. He corregido la respuesta. Espero que esto ayude a alguien. Salud.
Chinmay
1

Resolví este problema en ubuntu 12.04 siguiendo los pasos:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) eliminé mongo y luego lo instalé de nuevo
4) sudo service mongodb restart

y todo está bien

Almas
fuente