Conexão MongoDB - Gerenciamento Externo

Boa noite!

Preciso de uma ajuda para acessar o banco de dados da minha aplicação via gerenciamento externo. Já tentei várias configurações indicadas no fórum mas não está rolando.

Estou usando o Robo 3T.

Estou usando os dados oferecidos na String de conexão, o nome do meu banco de dados e o usuário e senha que criei na plataforma. Ainda sim a conexão é sempre recusada. (Set’s primary is unreachable.)

Também já tentei todas as estratégias de Auth Mecanism e as opções de TSL, SSH e Advanced estão sem nada. Também já tentei outros gerenciadores sem sucesso.

Agradeço desde já.

Boa tarde, @Diego_Martins

Primeiramente, seja muito bem-vindo a nossa Comunidade, Diego :heart:

Chegou a dar uma olhada nesse artigo aqui, Diego?

Note que quando habilita a conexão externa ao MongoDB são geradas duas strings de conexão. Está capturando a string correta para utilizar no seu gerenciador? As outras credenciais estão corretas também?

Caso não consiga resolver o erro, seria melhor se eu tentasse efetuar a mesma conexão que você está tentando fazer. Pode me enviar os seus dados de forma privada se quiser clicando ali em Mensagem dentro em cima da minha foto de perfil :wink:

Boa noite, Mario!

Muito obrigado!

Sim! Foi o primeiro artigo que encontrei que me ajudou (inclusive, dentro da aplicação a conexão funcionou sem problemas graças ao artigo). Meu problema está sendo mesmo a conexão via acesso externo.

Eu vou “camuflar” os dados e você me ajuda a configurá-lo? Desta forma talvez possamos ajudar mais gente no futuro.

Banco de Dados: banco
String de conexão: inventado.mongodb.umbler.com:46382
Usuário: admin
Senha: admin

String final para conexão:
mongodb://admin:admin@inventado.mongodb.umbler.com:46382/banco

Seria isso? Se for, vou checar novamente se errei ou marquei algo errado no software do 3T Robot.

Muito obrigado!

Abraços.

1 curtida

Boa tarde, @Diego_Martins

Exato, ótima ideia, meu querido, esse mesmo é o propósito da nossa Comunidade :heart:

Podemos fazer isso sim, mas pelo que vi você ainda não criou o banco novo. Me avise quando criar que dai poderemos talvez organizar para você não gastar seus créditos e criarmos apenas um banco de teste na sua hospedagem e logo depois excluí-lo, apenas como um teste :wink:

De qualquer forma, fiz um teste aqui para a gente conectando um banco MongoDB que criei na minha hospedagem de teste externamente e deu certo. Porém, não utilizei a connection string para conectar no banco, como você fez, e sim optei por conectar preenchendo cada campo individualmente (opção Fill in connection fields individually). Utilizei o MonboDB Compass para isso:

Dai cada dado ficaria assim, por exemplo:

image

image

Lhe recomendo fazer essa tentativa de conexão no seu banco para ver se funciona.

Quanto a string de conexão, ficaria assim nesse modelo:
mongodb://[user]:[password]@[host]:[port]/[database]?authSource=[database]

Creio que ai na sua faltou apenas setar o AuthSource que seria o conteúdo no app ao lado do nome do seu banco de dados :wink:

Por aqui deu tudo certo no meu banco de testes em ambos os métodos. Me diga se consegue testando assim, por favor :smile:

1 curtida

Olá pessoal, eu não consegui conectar o mongo externamente.

Tentei pelo shell do linux, depois pelo Mongo compass utilizando campo a campo.

Percebi que ao criar um banco mongo não tem a opção “Acesso externo” como tem no mysql

Estou utilizando os 7 dias free ainda, será que tem alguma restrição?

At.

Olá @Jardel_Palagi, bem vindo a comunidade Umbler.

Eu tive o mesmo problema e consegui resolver depois de algumas conversas com o pessoal do suporte e entender melhor a string do banco.

Resumidamente o endereço mostrado para o banco está incompleto a nível de conexões.
Todo endereço de conexão deve seguir a seguinte regra:

  1. Começar com mongodb:// ou mongodb+srv:// , dependendo de onde está hospedado. Na umbler é usado a primeira opção.
  2. Conter o endereço de conexão com porta. (ex: kamino.mongodb.umbler.com:41439 )
  3. Informar no final o banco utilizado. (ex: /teste )

No fim teríamos algo do tipo: mongodb://kamino.mongodb.umbler.com:41439/teste .

No caso de você tentar acessar pela linha de comando ou deixar como url de acesso na aplicação é necessário adicionar o USUARIO e a SENHA na string. Ficando assim: mongodb://USUARIO:SENHA@kamino.mongodb.umbler.com:41439/teste

Acessando pela linha de comando com o mongo ficaria assim:

mongo mongodb://USUARIO:SENHA@kamino.mongodb.umbler.com:41439/teste

Um outro ponto depois que você conseguir acessar o banco é verificar se a versão do banco oferecida pela Umbler(que atualmente é a 3.4.24) atende as suas demandas. Porque ela não tem por exemplo suporte a change streams que é a base para fazer aplicações em tempo real com web sockets.

Espero que isso resolva os seus problemas :slight_smile:

@Jardel_Palagi Bom dia, meu querido, tudo bem por ai?

O que o @kikuto lhe respondeu é correto, peço para checar se o método de acesso ao seu banco de dados está correto, está inserindo a string de conexão no banco de dados correta e com as credencias corretas.

Quanto a permissão para conexão externa no banco de dados, no caso do MongoDB o acesso externo já vem habilitado normalmente, por isso não tem essa opção. Então o erro provavelmente é outro mesmo.

Caso tenha conseguido resolver deixe aqui sua resolução, por favor ou se ainda restam dúvidas também fique a vontade para deixar aqui detacadas :wink:

No meu caso, como disse o @Mario_Alves, é necessário concatenar no final da string de conexão o valor ?authSource=database (onde database é o nome do seu banco de dados). Por exemplo:

mongodb://username:password@host:port/database?authSource=database

Sem essa configuração, eu estava recebendo um erro de ECONNREFUSED e, em outra tentativa, um Authentication failed dentro do aplicativo MongoDB Compass.

Espero que essa informação ajude alguém :slight_smile:

2 curtidas