como posso me conectar a um servidor mongo remoto do terminal Mac OS

101

Eu gostaria de entrar no shell mongo no terminal do meu MacBook. No entanto, estou interessado em me conectar a uma instância do Mongo que está sendo executada na nuvem (instância compose.io via complemento Heroku). Tenho o nome, a senha, o host, a porta e o nome do banco de dados do URI do MongoDB:

mongodb://username:[email protected]:10011/my_database

Instalei o mongodb no meu MacBook usando o Homebrew não porque quero o Mongo rodando no meu Mac, mas apenas para obter acesso ao programa shell mongo e me conectar a esse banco de dados remoto.

No entanto, não consigo encontrar o comando certo para obter o acesso total ao shell que gostaria. Usando as instruções encontradas aqui http://docs.mongodb.org/manual/reference/program/mongo/ (procure por "remoto"), consigo obter o que parece ser uma conexão, mas sem fornecer meu nome de usuário ou senha, não sou totalmente conectado. A execução db.auth(username, password)retorna 1 (ao contrário de "falha de autenticação" quando forneço nome de usuário e senha incorretos), mas continuo recebendo uma mensagem de erro "não autorizado" ao emitir o show dbscomando.

Jononomo
fonte

Respostas:

170

Você provavelmente está se conectando bem, mas não tem privilégios suficientes para executar show dbs.

Você não precisa executar o db.auth se passar o auth na linha de comando:

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

Depois de conectar, você consegue ver as coleções?

> show collections

Se assim for, tudo está bem e você simplesmente não tem privilégios de administrador para o banco de dados e não pode executar o show dbs

Ben
fonte
Sou capaz de me conectar usando a técnica que você descreve. No entanto, não consigo executar nenhum comando, como "mostrar coleções" ou "mostrar usuários". Estou ansioso para obter um erro "não autorizado para consulta em my_db.system.namespaces".
Jononomo
1
Ok, então o heroku nomeou aleatoriamente meu banco de dados mongo com um nome diferente daquele que estou usando no dev. Acho que esse foi basicamente o meu problema.
Jononomo de
1
Mas se eu tiver? AuthSource = admin no final. Não funciona. --authenticationDatabase não ajuda.
Roman Kazanovskyi de
27017 é a porta padrão. apenas no caso de a porta de exemplo não funcionar. docs.mongodb.com/manual/reference/default-mongodb-port
alteração de
51

Com o Mongo 3.2 e superior, basta usar sua string de conexão como está:

mongo mongodb://username:[email protected]:10011/my_database
Amio.io
fonte
0

Outra maneira de fazer isso é:

mongo mongodb://mongoDbIPorDomain:port
KayV
fonte