12
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

12 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

Infelizmente Fabiano, não consegui reproduzir o mesmo problema no meu ambiente. Mas, algo do seu ambiente está sempre corrompendo o arquivo de bloqueio, que é o mongod.lock, isso pode estar sim relacionado aos usuários e permissões.

Sei que você já tentou alguns processos, mas, irei tentar sugerir mais algumas coisas, para tentar resolver o seu problema.

  • Você indicou o diretório de dados ao executar o --repair?

mongod --dbpath /data/db --repair

Ao completar, o dbpath deve conter os arquivos de dados reparados e um arquivo mongod.lock vazio.

Uma outra opção que você pode tentar fazer com o arquivo mongod.lock:

  1. Exclua ou dê um novo nome para o arquivo mongod.lock
  2. Clique com o botão direito do mouse na janela e selecione Novo -> Documento de texto
  3. Renomeie o documento para mongod.lock (verifique se a opção Mostrar extensões está ativada para a pasta, caso contrário, esse arquivo ficará como mongod.lock.txt)
  4. Abra um prompt de comando do Windows e navegue até o diretório do MongoDB
  5. Inicie o serviço MongoDB apenas para garantir que tudo esteja limpo:
    • mongod --dbpath "caminho da pasta das configurações do sistema" --auth --port ''numero da porta''

Você pode tentar iniciar também pelos serviços do Windows.

O objetivo é tentar entender o que esta levando o arquivo a corromper quando o seu ambiente é desligado.

Olá boa noite,

A primeira opção eu já havia tentado anteriormente, sinalizando o dpath, de todo modo refiz após substituir o arquivo mongod.lock por um arquivo branco. O processo foi encerrado da mesma forma que o repair direto... O path do mongo está nas variaveis de ambiente, já que essa seria uma possível causa.... o final da execussão foi: "immediate exit due to unhandled exception".

A 2a opção e não havia tentado antes, criar um arquivo manualmente, então efetuei testes das duas formas, abiaxo o resultado dessa segunda

C:\Windows\system32>mongod --dbpath "C:\Program Files\MongoDB\Server\8.0\data" --auth --port 27017
{"t":{"$date":"2025-02-18T21:20:48.268-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-18T21:20:50.499-03:00"},"s":"I",  "c":"CONTROL",  "id":5945603, "ctx":"thread1","msg":"Multi threading initialized"}
{"t":{"$date":"2025-02-18T21:20:50.500-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-18T21:20:50.502-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-18T21:20:50.503-03:00"},"s":"I",  "c":"TENANT_M", "id":7091600, "ctx":"thread1","msg":"Starting TenantMigrationAccessBlockerRegistry"}
{"t":{"$date":"2025-02-18T21:20:50.503-03:00"},"s":"I",  "c":"CONTROL",  "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":13916,"port":27017,"dbPath":"C:/Program Files/MongoDB/Server/8.0/data","architecture":"64-bit","host":"DESKTOP-IB7B36J"}}
{"t":{"$date":"2025-02-18T21:20:50.503-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-18T21:20:50.503-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-18T21:20:50.503-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-18T21:20:50.503-03:00"},"s":"I",  "c":"CONTROL",  "id":21951,   "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"net":{"port":27017},"security":{"authorization":"enabled"},"storage":{"dbPath":"C:\\Program Files\\MongoDB\\Server\\8.0\\data"}}}}
{"t":{"$date":"2025-02-18T21:20:50.505-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-18T21:20:50.505-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-18T21:20:50.505-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-18T21:20:50.506-03:00"},"s":"F",  "c":"ASSERT",   "id":23092,   "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}

Pelo retorno do log e os processos que você já executou, estou muito desconfiada de ser permissão de acesso ao arquivo mesmo, ou seja, ele não está permitindo ser modificado, então, não fica vazio, como é indicado: Detected unclean shutdown - Lock file is not empty

Vamos tentar então, o seguinte processo.

Acesse as propriedades do arquivo e verifique as permissões do usuários e grupos:

print das propriedades do arquivo mongod.lock, onde está selecionado a aba de segurança com as permissões dos usuários

Você já informou que os ambos os usuários são admin, mas, vamos verificar para todos os pacotes de aplicativos e usuários não administradores, verifique também as permissões avançadas para os Admin. Você pode verificar até para outros arquivos ou pastas.

A ideia é dar permissão de modificar e gravar o arquivo e ver se dessa forma o arquivo fica vazio e o --repair funciona.

Boa tarde Danielle,

As permissões estão distribuídas corretamente.

Ambas as contas como admin: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Minhas permissões para a pasta do Mongo: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeE as permissões para o arquivo mongod.lock: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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

Então, Fabricio, entendo que você já fez várias tentativas para corrigir esse problema, mas, gostaria de tentar mais uma coisa.

Sugiro desativar temporariamente o seu antivírus, pois em alguns casos, softwares de segurança podem bloquear conexões de rede locais ou impedir que serviços se iniciem corretamente. Isso pode ser uma causa possível para o erro de "ECONNREFUSED" que você está enfrentando. Depois de desativar o antivírus e reiniciar o ambiente, tente rodar a ferramenta novamente para verificar se o problema persiste.

A grande questão é que cada ambiente é diferente, e isso pode dificultar o entendimento e diagnóstico do problema. Às vezes, questões relacionadas a configurações específicas de rede, permissões, outros aplicativos ou outras variáveis do sistema operacional podem causar esse tipo de erro, o que torna encontrar uma solução para o problema um pouco difícil. Algo drástico que poderia ser feito, era a formatação do ambiente, porém, nem sempre é possível e nem posso garantir que outros problemas não surgiriam, porém, o seu ambiente estaria totalmente limpo.

Com isso, mesmo querendo muito identificar o que pode causar o seu problema, caso ele persista, vou deixar aqui a indicação de outras alternativas que você pode tentar para rodar o MongoDB:

  1. Utilizando os executáveis diretamente: Em vez de instalar o MongoDB como um serviço no Windows, você pode usar os executáveis diretamente, sem precisar da instalação como serviço. Isso pode ser útil para rodar o MongoDB manualmente e verificar se ele está funcionando corretamente.
  2. Usando o Docker: O MongoDB pode ser facilmente rodado em um container Docker, o que pode ser uma ótima alternativa, especialmente se você não quiser mexer muito na configuração do sistema operacional. Rodar o MongoDB dentro de um container pode isolar os problemas relacionados ao sistema operacional e à configuração local.

Continuo a disposição!