shell - que - mongodb español
MongoDB ejecutándose pero no puede conectarse usando shell (16)
Aún no veo que esto tenga una respuesta aceptada, así que solo agregaré mis 2 centavos.
Tuve el mismo problema exactamente ahora. Después de un tiempo me di cuenta de que había bloqueado el host local en mis reglas de iptables. Por lo tanto, verifica tu firewall.
CentOS 5.x Linux con MongoDB 2.0.1 (probado main y legacy-static)
MongoDB se está ejecutando:
root 31664 1.5 1.4 81848 11148 ? Sl 18:40 0:00 ./mongod -f mongo.conf -vvvvv --fork
El uso de un shell simple connect para llegar al servidor falla:
[root@xxxx bin]# ./mongo
MongoDB shell version: 2.0.1
connecting to: test
Mon Oct 31 18:41:32 Error: couldn''t connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed
La interfaz web en el puerto 28017 se carga bien, al igual que el uso del shell MongoDB desde un host Linux remoto. También puede telnet para localhost: 27017, lo que significa que no hay puertos bloqueados. No hay ningún SELinux corriendo en esta máquina también. También he intentado especificar explícitamente localhost:2017/db
inútilmente.
$ ./mongo remote-ip:27017
MongoDB shell version: 2.0.1
connecting to: remote-ip:27017/test
> show dbs
local 0.03125GB
>
Los registros están completamente relacionados con el tema:
.....
Mon Oct 31 18:40:34 [initandlisten] fd limit hard:1024 soft:1024 max conn: 819
Mon Oct 31 18:40:34 [initandlisten] waiting for connections on port 27017
Mon Oct 31 18:40:34 BackgroundJob starting: snapshot
Mon Oct 31 18:40:34 BackgroundJob starting: ClientCursorMonitor
Mon Oct 31 18:40:34 BackgroundJob starting: PeriodicTask::Runner
Mon Oct 31 18:40:34 [websvr] fd limit hard:1024 soft:1024 max conn: 819
Mon Oct 31 18:40:34 [websvr] admin web console waiting for connections on port 28017
Alinear el cliente mongo shell muestra solo una llamada problemática:
[pid 31708] connect(4, {sa_family=AF_INET, sin_port=htons(27017), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EBADF (Bad file descriptor)
El sistema de archivos está limpio, no hay restricciones de ulimit (se ejecuta como raíz para las pruebas). Puedo ver desde el nivel que el cliente de mongo
intenta conectarse a través de TCP ( AF_INET
), pero dado que es local y MongoDB crea un socket de archivo, ¿hay alguna manera de decirle al cliente que se conecte a través de eso? O mejor aún, ¿por qué el cliente lanzará un EBADF?
EDITAR: Mi base Mongo conf:
dbpath=/root/mongodb-linux-i686-2.0.1/data
logpath=/root/mongodb-linux-i686-2.0.1/logs/mongo.log
slowms=15
rest=1
Abra el archivo /etc/mongod.conf y agregue el ip de la máquina desde donde se está conectando, a bind_ip
bind_ip = 127.0.0.1, su dirección IP de máquina remota aquí
Ex:-
bind_ip = 127.0.0.1,192.168.1.5
Reinicie el servicio mongodb:
sudo service mongod restart
Asegúrese de que el puerto mongodb esté abierto en el firewall.
También puede comentar la línea, si no está preocupado por la seguridad.
Creo que hay alguna configuración predeterminada que falta en esta versión del cliente mongoDb. Intenta ejecutar:
mongo 127.0.0.1:27017
Es extraño, pero luego experimenté que el problema desapareció :) (por lo que el comando simple ''mongo'' sin ningún parámetro volvió a funcionar para mí)
[Ubuntu Linux 11.10 x64 / MongoDB 2.0.1]
De forma predeterminada, mongodb está configurado para escuchar solo localhost. Extracto del archivo de configuración predeterminado de mongodb:
# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip=127.0.0.1
Uno necesita comentar el bind_ip para escuchar de entidades externas.
No podrá agregar fragmentos a menos que empiece a escuchar en interfaces no locales.
HTH,
Abhay Dandekar
Después de comenzar el mongod
$mongod --dbpath <db name>
para obtener el caparazón
$mongo --shell
Elimine /var/lib/mongodb/mongod.lock
, luego emita el sudo service mongodb start
, luego mongo
.
En Ubuntu:
Wed Jan 27 10:21:32 Error: no se pudo conectar al servidor 127.0.0.1 shell / mongo.js: 84 excepción: error de conexión
Solución
Busque si mongodb se está ejecutando siguiendo el siguiente comando:
ps -ef | grep mongo
Si mongo no se está ejecutando, obtienes:
vimal 1806 1698 0 10:11 pts/0 00:00:00 grep --color=auto mongo
Estás viendo que el daemon mongo no está allí.
Luego, comience a través del archivo de configuración (con root priev):
root@vimal:/data# mongod --config /etc/mongodb.conf &
[1] 2131
root@vimal:/data# all output going to: /var/log/mongodb/mongodb.log
puedes ver los otros detalles:
root@vimal:~# more /etc/mongodb.conf
Abra una nueva terminal para ver el resultado de mongod --config /etc/mongodb.conf y luego escriba mongo. Debería estar ejecutándose o grep
root@vimal:/data# ps -ef | grep mongo
root 3153 1 2 11:39 ? 00:00:23 mongod --config /etc/mongodb.conf
root 3772 3489 0 11:55 pts/1 00:00:00 grep --color=auto mongo
AHORA
root@vimal:/data# mongo
MongoDB shell version: 2.0.4
connecting to: test
obtienes el shell mongoDB
Este no es el final de la historia. Publicaré el método de reparación para que se inicie automáticamente cada vez, la mayoría de las paradas de la máquina de desarrollo se realizan todos los días y la VM debe tener mongo iniciado automáticamente en el siguiente inicio.
Encontré esto muy útil.
Si recibes el siguiente mensaje
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.84" (uid=1000 pid=3215 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
shriprasad@shriprasad-HP-430-Notebook-PC:/var/lib/mongodb$ mongo
Debe intentar iniciar el servicio de mongodb como usuario que no sea root. Debes ser usuario root. Por lo tanto, inicie sesión como root y luego ejecute el siguiente comando de la siguiente manera:
sudo bash
seguido por
service mongodb start
Enfrentando el mismo problema con el error descrito por Garrett arriba. 1. El servidor MongoDB con diario habilitado se está ejecutando como se ve mediante el comando ps 2. El cliente Mongo o el controlador Mongoose no pueden conectarse a la base de datos.
Solución: 1. Eliminar el archivo Mongo.lock parece devolver la vida a la normalidad en el servidor de CentOS. 2. Somos bastante nuevos en la ejecución de MongoDB en producción y hemos estado viendo el mismo problema surgiendo un par de veces a la semana. 3. Hemos configurado un cronograma cron para limpiar regularmente el archivo de bloqueo e informarle al administrador que ha ocurrido un incidente.
Buscando una solución a este problema o cualquier otra forma más permanente para resolverlo.
Es posible que desee comprobar su configuración para ver si bind_ip está configurado
bind_ip: 127.0.0.1
Si es así, esto solo permite inicios de sesión locales. Comenta esto y reinicia mongo, esto puede ser útil.
Esto no es un error ... Lo que ocurre aquí es que Mongo depende de un daemon para ejecutar el servidor de base de datos local, por lo que para "encender" el servidor mongo en su shell, debe iniciar el servicio de mongo primero.
Para Fedora Linux (que es el Distro que uso), debe ejecutar estos comandos:
1 sudo service mongod start
2 mongo
¡Y ahí lo tienes! el servidor se ejecutará Ahora, si desea que el servicio de Mongo comience cuando el sistema arranque, debe ejecutar:
sudo chkconfig --levels 235 mongod on
¡Y eso es todo! Si haces eso, ahora en el intérprete de comandos solo tienes que escribir mongo para iniciar el servidor, pero eso es más o menos, el problema es que primero tienes que 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 sea así, quizás deba modificar algunas palabras según la distribución que esté utilizando;)
No tanto una respuesta sino más bien un FYI: acabo de acertar y encontré esta pregunta como resultado de la búsqueda. Aquí están los detalles de mi experiencia:
Error de shell
markdsievers@ip-xx-xx-xx-xx:~$ mongo
MongoDB shell version: 2.0.1
connecting to: test
Wed Dec 21 03:36:13 Socket recv() errno:104 Connection reset by peer 127.0.0.1:27017
Wed Dec 21 03:36:13 SocketException: remote: 127.0.0.1:27017 error: 9001 socket exception [1] server [127.0.0.1:27017]
Wed Dec 21 03:36:13 DBClientCursor::init call() failed
Wed Dec 21 03:36:13 Error: Error during mongo startup. :: caused by :: DBClientBase::findN: transport error: 127.0.0.1 query: { whatsmyuri: 1 } shell/mongo.js:84
exception: connect failed
Los registros de Mongo revelan
Wed Dec 21 03:35:04 [initandlisten] connection accepted from 127.0.0.1:50273 #6612
Wed Dec 21 03:35:04 [initandlisten] connection refused because too many open connections: 819
Esto tal vez indique que la otra respuesta (JaKi) estaba experimentando lo mismo, donde algunas conexiones se depuraron y el acceso volvió a ser posible para el shell (otros clientes)
Si su bind_ip está configurado a algo que no sea 127.0.0.1, entonces deberá agregar el ip explícitamente incluso desde la máquina local. Simplemente use el mismo método que está usando en el cuadro remoto en el cuadro local. Al menos eso es lo que hizo por mí.
Tuve el mismo problema En mi caso, el servidor MongoDB no se estaba ejecutando.
Intenta abrir esto en tu navegador web:
http://localhost:28017
Si no puede, esto significa que debe iniciar el servidor MongoDB.
Ejecute mongod
en otra pestaña de terminal. Luego, en su pestaña principal, ejecute mongo
que es el shell que se conecta a su servidor MongoDB.
Tuve un problema similar, bueno, en realidad es el mismo (el proceso de mongo se está ejecutando pero no se puede conectar a él). Lo que hice fue a la ruta de mi base de datos y eliminé mongod.lock, y luego le di otra oportunidad (mongo reiniciado). Después de eso funcionó.
Espero que funcione para usted también. reparación mongodb en ubuntu
Yo tuve este problema también. ¿Es su diario MongoDB? Noté las siguientes entradas de "preasignación" en el archivo de registro. Una vez que vi la última línea "esperando conexiones en el puerto", pude conectarme. Tenga en cuenta que este modo "más rápido" tardó 12 minutos en iniciarse.
Guillermo
Tue Apr 17 16:48:01 [initandlisten] MongoDB starting : pid=2248 port=27017 dbpath=E:/MongoData 64-bit host=ME
Tue Apr 17 16:48:01 [initandlisten] db version v2.0.0-rc0, pdfile version 4.5
Tue Apr 17 16:48:01 [initandlisten] git version: 8d4bf50111352cee5a4f1abf25b63442d6c45dc4
Tue Apr 17 16:48:01 [initandlisten] build info: windows (6, 1, 7601, 2, ''Service Pack 1'') BOOST_LIB_VERSION=1_42
Tue Apr 17 16:48:01 [initandlisten] options: { bind_ip: "ip", dbpath: "E:/MongoData", directoryperdb: true, journal: true, logpath: "E:/MongoData/mongo.log", quiet: true, rest: true, service: true }
Tue Apr 17 16:48:01 [initandlisten] journal dir=E:/MongoData/journal
Tue Apr 17 16:48:01 [initandlisten] recover : no journal files present, no recovery needed
Tue Apr 17 16:48:02 [initandlisten] preallocateIsFaster=true 9.68
Tue Apr 17 16:48:04 [initandlisten] preallocateIsFaster=true 8.44
Tue Apr 17 16:48:06 [initandlisten] preallocateIsFaster=true 9.68
Tue Apr 17 16:48:06 [initandlisten] preallocateIsFaster check took 4.921 secs
Tue Apr 17 16:48:06 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.0
Tue Apr 17 16:52:37 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.1
Tue Apr 17 16:56:54 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.2
Tue Apr 17 17:01:42 [initandlisten] waiting for connections on port 27017
Tue Apr 17 17:01:42 [websvr] admin web console waiting for connections on port 28017