7
respostas

[Dúvida] MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017

Estou periodicamente tendo de lidar com o mesmo problema desde que iniciei a formação, e não encontro uma solução definitiva. Toda vez que reinicio minha máquina após algumas horas sem utilizar o MongoDB, não é mais possível realizar a conexão.

A duras penas, pesquisando no Stackoverflow descobri que após o uso é necessário desconectar o mongo, seja nas ferramentas NoSQLBooster ou Compass utilizadas nos cursos, ou com comando db.shutdownServer() ou CTRL+C 2 vezes no mongo shell... Entretando, mesmo desconectando o banco após o uso o problema se repete.

Tentei várias soluções para restaurar, algumas orientadas por aqui, outras no Stackoverflow, e o único modo que consigo retornar o uso é desinstalando todo o pacote, excluindo manulamente a pasta MongoDB e refazendo a instalação do zero. Mas está contraproducente.

Este é o erro no NoSQLBooster: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Ao tentar reconectar pelos serviçoes recebo a mensagem de erro 1067, mesmo após excluir o arquivo mongod.lock: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

7 respostas

Olá Fabiano, tudo bem?

Sinto muito por essa situação. Para tentar resolver esse problema, siga os passos abaixo:

Verificar se o Serviço do MongoDB está Parado

  1. Abra os Serviços do Windows

    • No menu Iniciar, pesquise por "Serviços" e abra o aplicativo. Você pode também digitar Win + R , digitar services.msc e pressionar Enter.
  2. Localize o serviço "MongoDB"

    • Role a lista até encontrar MongoDB.
  3. Verifique o status

    • Se o estado estiver "Parado", clique com o botão direito sobre ele e selecione Iniciar.

Agora abra o aplicativo MongoDB Compass e clique no botão Conectar. Feito isso, você poderá se conectar ao MongoDB Compass.

Para evitar esse problema, você pode definir o Tipo de Inicialização do serviço MongoDB como Automático, ele será iniciado automaticamente sempre que você ligar ou reiniciar o computador.

Configurar o MongoDB para Iniciar Automaticamente

  1. Na mesma janela de serviços que você se encontra
  2. Clique com o botão direito sobre o MongoDB e selecione "Propriedades".
  3. Na aba "Geral", localize a opção "Tipo de Inicialização" e altere para "Automático".
  4. Clique em "Aplicar" e depois em "OK".
  5. Reinicie o computador e verifique se o MongoDB iniciou corretamente.

Após seguir esses passos, o MongoDB será iniciado automaticamente sempre que o computador for ligado.

Caso o problema persista, me avise para que possamos explorar outras soluções.

Espero ter ajudado.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Olá, boa tarde.

Como citado acima, já segui esse passo indicado, encontrei em outras postagens aqui no forum e também no Stackoverflow. Entretanto não solucionou meu problema. O status altera para conectando... e algum tempo depois entra a mensagem de erro 1067, conforme print enviado acima.

A explicação para este erro é a de que a conexão foi encerrada abruptamente, porém, desde a primeira vez que tive esse problema, me policio para sempre encerrar a conexão, seja por comando no prompet, seja por dentro da aplicação que estiver utilizando. E mesmo assim o problema persiste.

Inclusive, hoje refiz a instalação do zero, e estava seguindo o curso Segurança e Disponibilidade de Dados, passei tranquilo pela etapa de solicitar autenticação para se conectar ao banco, porém no video Removendo permissões e usuários, onde retornamos o padrão default do mongod, não consigue mais conectar ao Mongo, pelo mesmo erro 1067.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Bom dia, Fabiano!

Peço então que teste a solução abaixo:

Excluindo o registro do serviço

  1. Abra o Executar (Win + R), digite regedit e pressione Enter.
  2. Navegue até o seguinte caminho:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
    
    Imagem do Editor de Registro do Windows exibindo o caminho 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services'. No painel esquerdo, há uma lista de serviços, incluindo '.NET CLR Data', '.NET Data Provider for MySQL' e outros. Um texto em vermelho com uma seta aponta para 'Services', instruindo: 'Nesta lista procure pelo MongoDB'
  3. Encontre a chave do MongoDB e:
    • Clique com o botão direito do mouse sobre ela.
    • Selecione "Exportar", nomeie o serviço com o mesmo nome conforme mostra na lista. Fazemos esse processo para criar um backup para o serviço.
    • Em seguida, clique com o botão direito do mouse no serviço e escolha Excluir para removê-lo da lista de serviços. Reinicie o computador.

Mesclar a Chave de Registro para Restaurar o Serviço

Se você excluiu a chave do MongoDB no Editor do Registro, agora precisa restaurá-la:

  1. Localize o backup que foi salvo no passo anterior (arquivo .reg).

  2. Clique com o botão direito sobre o arquivo e selecione "Mesclar".

  3. Confirme a ação e reinicie o computador.

    Imagem de um menu de contexto do Windows aberto sobre um arquivo de registro (.reg). A opção 'Mesclar' está destacada com um retângulo vermelho e uma seta apontando para ela.

Verificar e Corrigir Arquivos Corrompidos no Sistema

Se o erro persistir, pode haver arquivos corrompidos no Windows afetando o MongoDB.

  1. Abra o Prompt de Comando como Administrador.
  2. Execute o seguinte comando para verificar e corrigir arquivos do sistema
    sfc /scannow
    
  3. Aguarde a verificação ser concluída e reinicie o computador.

Espero que dê certo e fico no aguardo de atualizações!

Não funcionou.

A verificação de arquivos corrompidos eu já havia tentado e também não surtiu efeito.

Um detalhe importante é: mesmo aprendendo a corrigir o problema, o ideal seria impedir que ele ocorresse. As soluções que encontrei em foruns para evitar um desligamento forçado não surtiram efeito. Elas foram:

  • Desconectar do localhost nos aplicativos conectados;
  • Caso esteja conectado no prompet executar 2x CTRL+C, ou digitar o comando db.shutdownServer();

Mesmo tomando essas precauções, eu instalo o serviço, utilizo e quando reinicio a máquina ocorre o erro.

Eu finalizei a Formação ontem, com aproveitamento abaixo do que eu esperava, uma vez que a cada curso fui obrigado a desinstalar e reinstalar todo o Mongo. O último curso fiz sem replicar as práticas, e o 5º fiz as práticas pela metade, já que quando interrompi o serviço para alterar o mongod não consegui mais reconectar.

Olá, Fabiano, tudo bem?

Você poderia disponibilizar mais algumas informações? Assim, posso entender melhor o seu ambiente e tentar auxiliar com o seu problema.

  • Você tem alguma outro usuário criado nesse computador?
  • Você poderia tentar realizar a conexão pelo Shell e enviar aqui o que é retornado quando você tenta conectar ao MongoDB? Seria tipo o log que normalmente é exibido na própria tela de conexão ou você pode acessar no arquivo de log.

Aguardo o seu retorno!

Olá, boa noite!

Existe outro usuário sim, mas ambos são admin. Geralmente quando o instalador solicita, eu seleciono para a instalção ser apenas no meu usuário, mas não é o caso do instalador do Mongo. Uma vez tive questões de usuários interferindo, mas foi no anaconda.

Segue printe do erro no prompet executando monsh e mongod:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E aqui cópia do log da inicialização da máquina hoje.

{"t":{"$date":"2025-02-13T11:57:17.136-03:00"},"s":"I", "c":"CONTROL", "id":20698, "ctx":"thread1","msg":"***** SERVER RESTARTED *****"} {"t":{"$date":"2025-02-13T11:57:17.260-03:00"},"s":"I", "c":"CONTROL", "id":23285, "ctx":"thread1","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"} {"t":{"$date":"2025-02-13T11:57:20.999-03:00"},"s":"I", "c":"CONTROL", "id":5945603, "ctx":"thread1","msg":"Multi threading initialized"} {"t":{"$date":"2025-02-13T11:57:21.071-03:00"},"s":"I", "c":"NETWORK", "id":4648601, "ctx":"thread1","msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, set at least one of the related parameters","attr":{"relatedParameters":["tcpFastOpenServer","tcpFastOpenClient","tcpFastOpenQueueSize"]}} {"t":{"$date":"2025-02-13T11:57:21.260-03:00"},"s":"I", "c":"NETWORK", "id":4915701, "ctx":"thread1","msg":"Initialized wire specification","attr":{"spec":{"incomingExternalClient":{"minWireVersion":0,"maxWireVersion":25},"incomingInternalClient":{"minWireVersion":0,"maxWireVersion":25},"outgoing":{"minWireVersion":6,"maxWireVersion":25},"isInternalClient":true}}} {"t":{"$date":"2025-02-13T11:57:21.441-03:00"},"s":"I", "c":"CONTROL", "id":23316, "ctx":"thread1","msg":"Trying to start Windows service","attr":{"serviceName":"MongoDB"}} {"t":{"$date":"2025-02-13T11:57:21.442-03:00"},"s":"I", "c":"CONTROL", "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":4360,"port":27017,"dbPath":"C:/Program Files/MongoDB/Server/8.0/data","architecture":"64-bit","host":"DESKTOP-IB7B36J"}} {"t":{"$date":"2025-02-13T11:57:21.442-03:00"},"s":"I", "c":"CONTROL", "id":23398, "ctx":"initandlisten","msg":"Target operating system minimum version","attr":{"targetMinOS":"Windows 7/Windows Server 2008 R2"}} {"t":{"$date":"2025-02-13T11:57:21.445-03:00"},"s":"I", "c":"CONTROL", "id":23403, "ctx":"initandlisten","msg":"Build Info","attr":{"buildInfo":{"version":"8.0.4","gitVersion":"bc35ab4305d9920d9d0491c1c9ef9b72383d31f9","modules":[],"allocator":"tcmalloc-gperf","environment":{"distmod":"windows","distarch":"x86_64","target_arch":"x86_64"}}}} {"t":{"$date":"2025-02-13T11:57:21.448-03:00"},"s":"I", "c":"CONTROL", "id":51765, "ctx":"initandlisten","msg":"Operating System","attr":{"os":{"name":"Microsoft Windows 10","version":"10.0 (build 19045)"}}} {"t":{"$date":"2025-02-13T11:57:21.448-03:00"},"s":"I", "c":"CONTROL", "id":21951, "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"config":"C:\Program Files\MongoDB\Server\8.0\bin\mongod.cfg","net":{"bindIp":"127.0.0.1","port":27017},"service":true,"storage":{"dbPath":"C:\Program Files\MongoDB\Server\8.0\data"},"systemLog":{"destination":"file","logAppend":true,"path":"C:\Program Files\MongoDB\Server\8.0\log\mongod.log"}}}} {"t":{"$date":"2025-02-13T11:57:21.536-03:00"},"s":"W", "c":"STORAGE", "id":22271, "ctx":"initandlisten","msg":"Detected unclean shutdown - Lock file is not empty","attr":{"lockFile":"C:\Program Files\MongoDB\Server\8.0\data\mongod.lock"}} {"t":{"$date":"2025-02-13T11:57:21.542-03:00"},"s":"F", "c":"STORAGE", "id":50922, "ctx":"initandlisten","msg":"An incomplete repair has been detected! This is likely because a repair operation unexpectedly failed before completing. MongoDB will not start up again without --repair."} {"t":{"$date":"2025-02-13T11:57:21.542-03:00"},"s":"F", "c":"ASSERT", "id":23091, "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":50922,"file":"src\mongo\db\storage\storage_engine_init.cpp","line":109}} {"t":{"$date":"2025-02-13T11:57:21.542-03:00"},"s":"F", "c":"ASSERT", "id":23092, "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}

Vale salientar que, no LOG diz que o Mongo não irá inicializar sem a execussão do --repair, mas mesmo seguindo os passos de repair não funcionaou.

  1. remove the file /data/db/mongod.lock
  2. run mongod.exe --repair
  3. start the mongod service net start MongoDB

Fonte