¿Cómo puedo conectarme a un servidor mongo remoto desde la terminal de Mac OS?


101

Me gustaría colocarme en el shell mongo en la terminal de mi MacBook. Sin embargo, estoy interesado en conectarme a una instancia de Mongo que se esté ejecutando en la nube (instancia de compose.io a través del complemento Heroku). Tengo el nombre, la contraseña, el host, el puerto y el nombre de la base de datos del URI de MongoDB:

mongodb://username:password@somewhere.mongolayer.com:10011/my_database

He instalado mongodb en mi MacBook usando Homebrew no porque quiera que Mongo se ejecute en mi Mac, sino solo para obtener acceso al programa shell mongo para poder conectarme a esta base de datos remota.

Sin embargo, no puedo encontrar el comando correcto para obtener el acceso completo al shell que me gustaría. Usando las instrucciones que se encuentran aquí http://docs.mongodb.org/manual/reference/program/mongo/ (busque "remoto") puedo obtener lo que parece una conexión, pero sin dar mi nombre de usuario o contraseña no lo soy Totalmente conectado. La ejecución db.auth(username, password)devuelve 1 (en contraposición a "auth falla" cuando proporciono un nombre de usuario y contraseña incorrectos), pero sigo recibiendo un mensaje de error "no autorizado" al emitir el show dbscomando.

Respuestas:


170

Probablemente se esté conectando bien pero no tiene suficientes privilegios para ejecutar show dbs.

No es necesario que ejecute db.auth si pasa la autenticación en la línea de comando:

mongo somewhere.mongolayer.com:10011/my_database -u username -p password

Una vez que se conecte, ¿podrá ver las colecciones?

> show collections

Si es así, todo está bien y simplemente no tiene privilegios de administrador en la base de datos y no puede ejecutar la show dbs


Puedo conectarme usando la técnica que usted describe. Sin embargo, no puedo ejecutar ningún comando, como "mostrar colecciones" o "mostrar usuarios". Deseo recibir un error "no autorizado para realizar consultas en my_db.system.namespaces".
Jononomo

1
Ok, heroku nombró aleatoriamente a mi base de datos mongo con un nombre diferente al que he estado usando en dev. Creo que ese fue básicamente mi problema.
Jononomo

1
Pero si tengo? AuthSource = admin al final. No funciona. --authenticationDatabase no ayuda.
Roman Kazanovskyi

27017 es el puerto predeterminado. en caso de que el puerto de ejemplo no funcione. docs.mongodb.com/manual/reference/default-mongodb-port
cambio el

51

Con Mongo 3.2 y superior, simplemente use su cadena de conexión como está:

mongo mongodb://username:password@somewhere.mongolayer.com:10011/my_database

0

Otra forma de hacer esto es:

mongo mongodb://mongoDbIPorDomain:port
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.