incapaz de iniciar o servidor local mongodb


167

Eu sou novo no mongodb .. quando eu tentei executar o servidor local mongodb com o mongodcomando ele falhou ao executar e lançou este erro ..

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

Tentei excluir o mongod.lockarquivo ... Corri mongod --repair.. Também alterei as permissões para o mongod.lockarquivo.

mas nada parece funcionar .. continua mostrando o mesmo erro .. o que devo fazer.?

Também instalei a versão 1.7.4.1 do git, mas ela mostra nogitversion com erro.


Eu tive o mesmo problema e esta solução funcionou para mim stackoverflow.com/questions/5798549/...
Eddie

Respostas:


176

Experimentar:

sudo service mongod stop
sudo mongod

Para parar o serviço mongodb ativo atual, permitindo que você inicie um novo


1
Eu também tenho a mensagem de serviço, mas decidiu ignorá-lo e tente reiniciar novamente com o "sudo mongod" e depois finalmente funcionou
kpierce8

2
Isso não deveria ser mongod (não mongodb)? Baseado em docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/…
xavier

5
sudo service mongodb stopfuncionou para mim no Ubuntu 14.10.
1811 Joe Corneli

1
Não há comando de serviço no OS X. Se você tiver o mongo instalado via homebrew, poderá usá-lo brew services. (via unix.stackexchange.com/questions/155715/… )
Charlie Stanard

1
@HarshaMV `serviços BREW parada <formula>`
Jacob

149

Não interrompa o processo usando o sinal -9, pois isso causaria danos: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Use em sudo killall -15 mongodvez disso


2
Isso não responde à pergunta original.
Beau Grantham

8
killall mongodfaz a mesma coisa também. o -15diz killallpara enviar um sinal SIGTERM, o que ocorre por padrão.
T Blank

4
Na verdade, fazer um killall realmente funcionou para mim, em vez de tentar parar o serviço. Portanto, mesmo que não responda às perguntas. Isso foi útil
André Pena

59

Andreas Jung:

"Sáb 25 de junho 09:38:51 [lista de inicialização] listen (): bind () falhou errno: 98 Endereço já em uso para o soquete: 0.0.0.0:27017

é auto-falante.

Outra instância do mongod já está em execução e alocando a porta padrão do MongoDB, que é 27017.

Mate o outro processo ou use uma porta diferente ".

Nesse caso, digite o seguinte comando

ps wuax | grep mongo

Você deve ver algo parecido com isto

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

Agora digite o comando kill para a instância mongod (31936 neste caso):

kill 31936

29

Sáb 25 de junho 09:38:51 [initandlisten] listen (): bind () falhou errno: 98 Endereço já em uso para o soquete: 0.0.0.0:27017

é auto-falante.

Outra instância do mongod já está em execução e alocando a porta padrão do MongoDB, que é 27017.

Mate o outro processo ou use uma porta diferente.


47
Encontrei isso na página de introdução ... ** Quando o mongodb ** está instalado via aptitude, ele já está em execução (portanto, no exemplo, você não precisa iniciá-lo). Em seguida, basta digitar: $ mongo .. desde que eu pessoalmente força mongod início e eu estava seguindo o quickstart tutorial .. i dint sabia que já estava correndo ...
sakthig

@Sakti: Sim, ele já está sendo executado para mim! Acho que fiz via aptitude. THX!
sk8terboi87ツ

29

Descubra no netstat qual processo está executando a porta mongodb (27017)

comando:

sudo netstat -tulpn | grep :27017

A saída será:

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

No meu caso "6432" é o pid, pode ser diferente no seu caso. Em seguida, mate esse processo usando o seguinte comando:

sudo kill <pid>

É isso aí!


25

Usar:

sudo killall mongod

Parará o servidor.

Depois reinicie mongod:

sudo service mongod restart

deve funcionar.


23

Você já tem um processo em execução. Você pode matá-lo com o comando:

killall mongod

15

Você quer fazer killall -15 mongod, porque ele ainda está em execução: Address already in use for socket: 0.0.0.0:27017.

Então você pode correr mongodnovamente.


Por que não simplesmente killall mongod?
Dmitri Zaitsev

1
No matching processes belonging to you were found
retrovertigo 25/10

Então mongod não deve ser um processo em execução. Talvez o endereço está sendo usado por um processo diferente
John Ottenlips

7

Tente uma porta diferente se você não encontrar nenhum processo em execução atual ou matá-lo não funcionar. Por exemplo, tente 27018 porque o padrão é 27017.

mongod  --port 27018

Eu descobri isso com o comando, mongod --help



6

Tente killall -15 mongod / killall mongod Mesmo depois disso, se isso não funcionar, remova a pasta db storage digitando os seguintes comandos sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Activity Monitor , procure mongod , atravesse-o. depois execute novamente o mongod. problema resolvido.


O OP não especifica o sistema operacional, mas os arquivos de log indicam claramente o Linux.
Nic Nilov

4

Abra o terminal e digite:

mkdir -p /data/db

Em seguida, digite:

mongod

3

Eu tive o mesmo problema quando tentei abrir uma nova instância do mongod e ele disse que já estava em execução.

Eu verifiquei os documentos e ele disse para digitar

mongo
use admin
db.shutdownServer()

3

Não foi possível iniciar o MongoDB devido principalmente ao desligamento impuro. Para remediar, exclua o arquivo mongod.lock. Este arquivo está localizado na pasta de dados.

Descubra onde está sua pasta de dados, procurando no arquivo mongodb.conf ou mongod.conf. (Arquivo Conf em / etc nos sistemas Linux.)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

Por exemplo, usando a configuração acima, o arquivo está em /var/lib/mongodb/mongod.lock. Simplesmente remova-o e reinicie o mongodb.


1
Isso aconteceu comigo mais de uma vez, especialmente em servidores em nuvem que foram "redefinidos por hardware" quando não responderam. É uma solução fácil e deve ser a melhor resposta.
SevakPrime

2

Eu enfrentei o mesmo problema. Embora o mongodbserviço não esteja sendo executado, o log mostrou uma address already in usemensagem.

 $netstat -tulpn | grep :27017 

não retorna nada

Em uma análise mais aprofundada, constatou que o problema ocorreu devido ao bloqueio do arquivo. O serviço está funcionando bem, após excluir o arquivo de bloqueio e reiniciá-lo.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start

2

Verifique os logs em /var/log/mongodb/mongod.log e tente deduzir o erro. No meu caso foi

Falha ao desvincular o arquivo de soquete /tmp/mongodb-27017.sock errno: 1 Operação não permitida

Excluído /tmp/mongodb-27017.sock e funcionou.


1

experimentar

/usr/lib/mongodb/mongod.exe --dbpath c: data \ db

--dbpath (deve ser seguido pelo caminho do seu db)


1

Pode ser possível que o servidor já esteja em execução. Por favor, verifique com o comando mongo está funcionando ou não.


1

Para resolver o problema no Windows , as etapas abaixo funcionam para mim:

Por exemplo, o mongoDB versão 3.6 está instalado e o caminho de instalação do MongoDB é "D: \ Arquivos de Programas \ MongoDB".

Crie a pasta D: \ mongodb \ logs e crie o arquivo mongodb.log dentro desta pasta.

Execute o cmd.exe como administrador ,

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

Remova esses dois arquivos mongod.locke storage.bsonna pasta "D: \ mongodb \ data".

Em seguida, digite net start MongoDBo cmd usando o privilégio de administrador, o problema será resolvido.


0

Ele mostra o erro listen (): bind () falhou errno: 98 Endereço já em uso para o soquete: 0.0.0.0:27017 ou seja, o endereço 27017 já está sendo usado por algum outro serviço. verifique isto pelo comando "netstat -apt | grep" 27017 "" "


0

(Se você estiver usando Linux,) se

mongod --shutdown --config=path/to/your/configFile.conf 

ou

mongod --repair --config=path/to/your/configFile.conf 

não corrigiu o problema, efetuou logout e fez login novamente . Isso resolveu meu problema.

Ou você pode matar o processo manualmente a partir do terminal, eu acho.


0

Parece que o mesmo erro é mostrado nos logs quando você está perdendo a configuração do ambiente LC_ALL. É confuso, mas você pode executar o mongocliente para verificar se é um problema.


0

se você estiver executando o mongo pela primeira vez, talvez queira definir o caminho primeiro

mongod --dbpath <path to the directory>

0

O processo de assassinato não resolveu meu problema. Meu mac falhou e, na reinicialização, alguns dos arquivos de bloqueio (mongod.lock, WiredTiger.lock) estavam presentes no mongo dbPath. Movi esses arquivos para uma pasta diferente (não os excluí para evitar mais problemas) e funcionou. Em estrela de sucesso, excluí os arquivos de bloqueio movidos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.