30.01.2025

Como resolver o erro do MongoDB: Connect ECONNREFUSED 127.0.0.1:27017?

Um erro bastante comum tem afetado muitos usuários do MongoDB, impedindo a conexão aos servidores de banco de dados. A causa desse problema pode estar relacionada a eventos recentes na MongoDB Inc., que deixaram usuários com servidores de banco de dados inativos. Ao tentar se conectar via o cliente mongosh, o servidor retorna a resposta padrão: “mongodb://127.0.0.1:27017/?directconnection=true&serverselectiontimeoutms=2000&appname=mongosh+2.1.1” mesmo quando há uma conexão local.

Screenshot №1 — Erro

Neste caso, tanto o cliente quanto o servidor estão na mesma máquina. Assim, as chamadas do cliente para o servidor serão feitas via loopback. No entanto, no seu caso, pode ser outro servidor na rede.

O cliente ou a ferramenta mongosh gera uma solicitação e a envia para a porta do servidor, tentando estabelecer a conexão. Se for bem-sucedida, veremos a interface do MongoDB para interagir com o servidor; se falhar, veremos uma resposta de erro. As razões para isso podem variar bastante, desde o daemon não estar em execução até a indisponibilidade do servidor na rede. Todos os passos deste tutorial podem ser realizados em servidores na nuvem.

O daemon foi desativado

Primeiro, vamos verificar o funcionamento do daemon do MongoDB usando o gerenciador de serviços systemd. Se o seu sistema operacional usa um sistema diferente, adapte o comando de acordo com ele:

systemctl status mongod

Screenshot №2 — Daemon desativado

Como podemos ver na captura de tela, o serviço está desativado e não está funcionando. Vamos tentar iniciá-lo:

systemctl start mongod

Em seguida, vamos verificar o estado do serviço em execução no sistema para identificar possíveis erros:

journalctl -xeu mongod

Screenshot №3 — Logs do serviço

Ótimo, o serviço foi iniciado. Podemos confirmar isso pelas linhas "job for unit finished successfully". No entanto, o problema nem sempre é apenas um daemon não iniciado. Um erro de configuração do MongoDB também é bastante comum.

Erro de conexão e configuração

Ao conectar-se ao servidor, verifique se a sua solicitação está correta. No erro descrito anteriormente, há a entrada: mongodb://127.0.0.1:27017/?directconnection=true, Isso indica uma conexão com um servidor local. Se você deseja usar um servidor remoto, utilize a seguinte sintaxe: mongodb://meuusuario:minhasenha@123.456.789.0:27017/meubanco. Obviamente, substitua meuusuario, minhasenha, 123.456.789.0 e meubanco pelos valores corretos para conectar-se corretamente.

Se isso não funcionar, verifique a disponibilidade da rede do seu servidor na porta onde ele deve estar escutando conexões. Você pode fazer isso com uma ferramenta específica. Caso não tenha uma instalada, use o seguinte comando para instalá-la:

apt install netcat-traditional -y

Agora, vamos verificar a conexão:

nc -zv 127.0.0.1 27017

Screenshot №4 — Teste da porta

No nosso servidor, o serviço está em execução, então há uma resposta. No seu caso, pode ser diferente. Se a porta estiver fechada, edite o arquivo de configuração do MongoDB:

nano /etc/mongod.conf

Screenshot №5 — Arquivo de configuração

Certifique-se de que as configurações de rede atendem às suas necessidades e que o servidor está escutando na porta e no endereço corretos. Caso contrário, altere os dados, salve o arquivo usando Ctrl + O e reinicie o serviço!

O usuário do sistema não tem permissões

O MongoDB cria um serviço e um usuário específicos e define no sistema que ele será executado sob esse usuário. Isso limita os direitos do software apenas aos necessários, além de controlar o acesso aos arquivos do banco de dados. Para verificar se o arquivo de configuração pertence ao usuário correto na pasta de armazenamento, use o comando:

ls -la /etc/mongod.conf

Screenshot №6 — Permissões

À esquerda, podemos ver as permissões de acesso para três grupos. O dono do arquivo pode escrever e ler, enquanto outros grupos podem apenas ler. Neste caso, o proprietário é o root, o que é aceitável. O mais importante é garantir que a categoria "outros", na qual o MongoDB está incluído, tenha acesso de leitura ou seja o proprietário com permissões adequadas. Para conceder permissões, use o comando:

chmod 644 /etc/mongod.conf

Screenshot №7 — Alteração de permissões

Após isso, teste a conexão novamente e reinicie o daemon do MongoDB!

Compreender as causas desse erro e utilizar as ferramentas corretas para diagnosticar e corrigir o problema permitirá restaurar com sucesso o funcionamento do MongoDB e resolver falhas de conectividade com o servidor do banco de dados.