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.
Primeiramente, seja muito bem-vindo a nossa Comunidade, Diego
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
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.
Exato, ótima ideia, meu querido, esse mesmo é o propósito da nossa Comunidade
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
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:
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:
Começar com mongodb:// ou mongodb+srv:// , dependendo de onde está hospedado. Na umbler é usado a primeira opção.
Conter o endereço de conexão com porta. (ex: kamino.mongodb.umbler.com:41439 )
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:
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.
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
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:
Sem essa configuração, eu estava recebendo um erro de ECONNREFUSED e, em outra tentativa, um Authentication failed dentro do aplicativo MongoDB Compass.