não foi possível conectar ao servidor 127.0.0.1 shell / mongo.js

88

quando eu configuro mongodb no meu Ubuntu, eu tento: ./mongo ele mostra este erro:

 couldn't connect to server 127.0.0.1 shell/mongo.js

então o que eu posso fazer ,

obrigado

zjm1126
fonte
Como você instalou? Você usou uma aptidão? Você baixou o tarbal diretamente?
Bryan Migliorisi,
1
Eu tive esse erro e foi porque no ubuntu eu não executei mongodprimeiro
Connor Leech

Respostas:

124
  • Remova manualmente o lockfile: sudo rm /var/lib/mongodb/mongod.lock
  • Execute o script de reparo: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Por favor observe o seguinte:

  • Você deve executar este comando como o usuário mongodb. Se você executá-lo como root, o root terá os arquivos em / var / lib / mongodb / que são necessários para executar o daemon mongodb e, portanto, quando o daemon tentar ser executado posteriormente como o usuário mongodb, não terá permissão para iniciar . Nesse caso, você obterá este erro: Incapaz de criar / abrir arquivo de bloqueio para lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 Permissão negada, encerrando.
  • No Ubuntu, você deve especificar o arquivo de configuração /etc/mongodb.conf usando o sinalizador -f. Caso contrário, ele procurará os arquivos de dados no local errado e você verá o seguinte erro: dbpath (/ data / db /) does not exist, finaling.
Fady Mohamed Osman
fonte
Ótimo link. Resolvido o problema exatamente.
jaketrent
1
A resposta está acima agora.
fady mohamed osman
2
como executar isso como o usuário mongodb?
user4951
Basta adicionar-se ao grupo mongodb: useradd -G mongodb fady substitua fady pelo seu nome de usuário.
fady mohamed osman
2
Tive que usar as informações desta resposta e da resposta de @boulder_ruby. Isso porque meu '/ data / db /' estava faltando. Talvez seja uma boa atualização para que esta resposta seja mais completa.
Fabricio Buzeto 08/01
32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Aqui está tudo, às vezes, demora um pouco para iniciar o mongo após realizar essas operações.

Rubyrider
fonte
Se eu tentar `sudo -u mongodb mongod -f /etc/mongodb.conf --repair` aqui está o que eu obtenho:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus
21

Tentando executar $ mongod

Se você receber um erro como

MongoDB shell version: 2.0.5
connecting to: test
Fri Jun  1 11:20:33 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed

hisham-agil:~ hisham$ mongod
mongod --help for help and startup options
Fri Jun  1 11:24:47 [initandlisten] MongoDB starting : pid=53452 port=27017 dbpath=/data/db/ 64-bit host=hisham-agil.local
Fri Jun  1 11:24:47 [initandlisten] db version v2.0.5, pdfile version 4.5
Fri Jun  1 11:24:47 [initandlisten] git version: nogitversion
Fri Jun  1 11:24:47 [initandlisten] build info: Darwin gamma.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:48:32 PST 2012; root:xnu-1699.24.23~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
Fri Jun  1 11:24:47 [initandlisten] options: {}
Fri Jun  1 11:24:47 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Fri Jun  1 11:24:47 dbexit: 
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close listening sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to flush diaglog...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: waiting for fs preallocator...
Fri Jun  1 11:24:47 [initandlisten] shutdown: lock for final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: closing all files...
Fri Jun  1 11:24:47 [initandlisten] closeAllFiles() finished
Fri Jun  1 11:24:47 dbexit: really exiting now

Então você se deparou com um erro básico de inicialização que é bastante comum.

Por padrão, o mongod tentará usar / data / db para seus arquivos de banco de dados, que neste caso, não existe.

Você não pode começar

mongo 

até você lidar

mongod.

Tente criar esses diretórios e verifique se eles podem ser gravados pelo mesmo usuário que está executando o processo mongod.

** Veja pergunta semelhante - Obtendo um erro, "Erro: não foi possível conectar ao servidor 127.0.0.1 shell / mongo.js" e ao tentar executar o mongodb no mac osx lion

boulder_ruby
fonte
você também pode definir o dbpath assim: mongod --dbpath ../data
cbaigorri
20

Na verdade, isso não é um erro ... O que acontece aqui é que o Mongo depende de um daemon para executar o servidor de banco de dados local, então, para " iniciar " o servidor mongo em seu shell, você deve iniciar o serviço mongo primeiro.

Para Fedora Linux (que é a Distro que uso), você deve executar estes comandos:

1 sudo service mongod start
2 mongo

E aí está! o servidor vai rodar. Agora, se você deseja que o serviço Mongo inicie quando o sistema inicializar, você deve executar:

sudo chkconfig --levels 235 mongod on

E isso é tudo! Se você fizer isso, agora no shell você só precisa digitar mongo para iniciar o servidor, mas é basicamente isso, o problema é que você tem que iniciar o SERVIÇO primeiro e depois o SERVIDOR :)

PS Os comandos que postei podem funcionar em outras distros Linux também, não apenas no fedora ... Caso não, talvez você tenha que ajustar algumas palavras dependendo da distro que estiver usando;)

Jmlevick
fonte
A mesma solução se aplica à pergunta: stackoverflow.com/questions/7958228/…
Jmlevick
Tantas vezes fico perplexo e coço a cabeça por um longo tempo, e finalmente percebo: 'oh, eu só tenho que fazer sudo. "
autor do ben
2
e para variantes Debian / Ubuntu: sudo service mongodb start
ljs.dev
10

Tive o mesmo problema quando tentei instalar o mongo. Recebi Erro como,

Erro

"Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84"

Solução:

Primeiro instale o mongod usando:

sudo apt-get install mongodb-server

Então digite

mongod --dbpath /mongo/db

Então

sudo rm /var/lib/mongodb/mongod.lock

Então

sudo -u mongodb mongod -f /etc/mongodb.conf  --repair

Obrigado

Samarth P Shenoy
fonte
Este método excluirá os bancos de dados existentes no mongo?
Evan
6

Você precisa deletar o lockfile mongod.lockou /var/lib/mongodb/mongod.lockno ubuntu, então você precisa executar mongod.exeou service mongodb startno ubuntu primeiro, depois executar mongo.exeou mongono ubuntu.

user1391225
fonte
O OP está no Ubuntu, então tenho certeza de que eles não usarão nenhum .exearquivo.
me_e
Estou recebendo esta mensagem de erro e não consigo encontrar um "mongod.lock" em meu sistema de arquivos. Essas instruções se aplicam ao Mac OSX?
boulder_ruby
5

Ou seu mongod não está rodando (verifique usando o comando "ps") ou ele está escutando em algum endereço IP externo e não em localhost. Portanto, primeiro verifique a lista de processos se 'mongod' está em execução. Se sim, verifique com "netstat -nap" para a porta relacionada.

Claro que você pode iniciar o mongod no console manualmente ou até mesmo olhar para o arquivo de log do mongod (se houver um configurado ... dependendo de como você instalou o mongod).

Andreas Jung
fonte
5

Primeiro você tem que se certificar de que todos os arquivos e diretórios em sua pasta / var / lib / mongodb / (ou qualquer pasta que dbpath aponte) pertencem ao usuário mongodb e grupo mongodb.

cd /var/lib/mongodb/
sudo chown mongodb filename.*
sudo chgrp mongodb filename.*
sudo chown -R mongodb directory
sudo chgrp -R mongodb directory

(Substitua o nome do arquivo e diretório com seus respectivos nomes)

Depois, você pode remover o bloqueio, reparar o banco de dados e reiniciar o daemon como outras pessoas já mencionaram:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start
Tom Desair
fonte
Como é que não há votos positivos para isso? Esta foi a única solução, entre meia dúzia de entradas de SO que procurei, que funcionou para mim. Obrigado, senhor.
FRD
O comando para iniciar com o arquivo de configuração e forçar um reparo está sudo -u mongodb mongod -f /etc/mongod.conf --repairno Ubuntu 14.
okoboko
5

Primeiro inicie o seu servidor mongo por

Users-MacBook-Pro:csv1 Admin$ mongod
all output going to: /usr/local/var/log/mongodb/mongo.log

Em seguida, abra outra janela de terminal e abra o shell

Users-MacBook-Pro:csv1 Admin$ mongo
Tarun Gupta
fonte
2

Verifique também se a partição raiz tem espaço suficiente para iniciar o mongod.

df -h /

Você verá algo assim no lançamento do mongod:

Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 12 17:02:59.159 dbexit: 
Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...
DmitrySandalov
fonte
1

No Ubuntu, tente isto:

sudo invoke-rc.d mongodb start
Vencedor
fonte
1

Pode ser uma combinação de $ PATH e problema de permissão.

Tente seguir as etapas fornecidas abaixo:

Atualize sua variável $ PATH para apontar para seu arquivo bin MongoDB. No meu caso, instale o MongoDB nesta pasta:

/usr/local/Cellar/mongodb/2.4.6/

Para atualizar sua variável $ PATH, faça o seguinte:

$ sudo vi /etc/paths

Em seguida, pressione 'i' para inserir texto em Vi e anexe o caminho do MongoDB ao final do arquivo 'caminhos' e reinicie o terminal.

/usr/local/Cellar/mongodb/2.4.6/bin

Use 'Esc: w q' para salvar e sair do editor Vi.

Use echo para exibir sua variável de caminho:

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin

Agora tente verificar a versão do Mongo, se você estiver seguindo, então você está no caminho certo!

$ mongo --version
MongoDB shell version: 2.4.6

Agora precisamos criar o diretório do banco de dados. Eu usei o local padrão '/ data / db' sugerido nos documentos do MongoDB. Eu também criei um diretório de log para evitar quaisquer problemas de permissão enquanto o Mongo tenta criar qualquer log. Mude a propriedade e isso fará o trabalho.

$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data

Agora, criaremos um arquivo de configuração padrão para MongoDB a ser fornecido pela primeira vez que executarmos o comando 'mongod'. Agora, também gostaria de salientar que 'mongod' iniciará um serviço, que ouvirá as conexões de dados de entrada. Isso é semelhante a ter '$ service mysqld start' executado. Vamos em frente e criar o arquivo de configuração. Lembre-se de que criei um arquivo de configuração muito básico. No entanto, você pode adicionar muitas outras variáveis ​​para configurar o MongoDB. Esta é a primeira vez que estou jogando com o MongoDB, então sei tanto quanto leio nos documentos do MongoDB! Criei 'mongodb.conf'.

$ sudo vi /etc/mongodb.conf

Adicione o seguinte:

fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true

Observe que a porta padrão para o servidor MongoDB é 27017. Use seu próprio caminho para dbpath e logpath que você criou na Etapa - 5. Não se esqueça de fechar e salvar o arquivo conf.

Agora estamos prontos para iniciar nosso serviço MongoDB. Abra duas instâncias do Terminal. No Terminal 1, digite:

$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting

Se você receber a mensagem acima, saiba que iniciou com êxito o serviço Mongod.

Agora, para se conectar a ele, no Terminal 2 digite o seguinte:

$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

Ignore os avisos, mas você está conectado com sucesso ao banco de dados de 'teste'! Legal!

Isso é tudo. Eu apliquei essa solução quando tentei instalar uma cópia do MongoDB no meu Mac pela primeira vez. Veja se isso ajuda você também.

Para postagens detalhadas, você pode ir aqui - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

Espero que ajude!

Saúde, Chinmay

Chinmay
fonte
Embora este link possa responder à pergunta, é melhor incluir as partes essenciais da resposta aqui e fornecer o link para referência. As respostas somente com link podem se tornar inválidas se a página vinculada mudar.
Radim Köhler
@ RadimKöhler, obrigado pelo aviso. Eu corrigi a resposta. Espero que isso ajude alguém. Felicidades.
Chinmay
1

Resolvi este problema no ubuntu 12.04 seguindo os seguintes passos:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Removi o mongo e instalei novamente
4) sudo service mongodb restart

e tudo está bem

Almas
fonte