nie można połączyć się z serwerem 127.0.0.1 shell / mongo.js

88

kiedy konfiguruję mongodb w moim ubuntu, próbuję: ./mongo pokazuje ten błąd:

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

więc co mogę zrobić ,

dzięki

zjm1126
źródło
Jak to zainstalowałeś? Czy użyłeś zdolności? Czy pobrałeś Tarbal bezpośrednio?
Bryan Migliorisi
1
Miałem ten błąd i to dlatego, że na Ubuntu nie uruchomiłem mongodpierwszego
Connor Leech

Odpowiedzi:

124
  • Ręcznie usuń plik blokady: sudo rm /var/lib/mongodb/mongod.lock
  • Uruchom skrypt naprawy: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Zwróć uwagę na następujące kwestie:

  • Musisz uruchomić to polecenie jako użytkownik mongodb. Jeśli uruchomisz go jako root, root będzie posiadał pliki w / var / lib / mongodb /, które są niezbędne do uruchomienia demona mongodb i dlatego gdy demon spróbuje uruchomić później jako użytkownik mongodb, nie będzie miał uprawnień do uruchomienia . W takim przypadku pojawi się ten błąd: Nie można utworzyć / otworzyć pliku blokady dla ścieżki pliku lock: /var/lib/mongodb/mongod.lock errno: 13 Odmowa dostępu, przerywanie.
  • W systemie Ubuntu należy określić plik konfiguracyjny /etc/mongodb.conf za pomocą opcji -f. W przeciwnym razie będzie szukać plików danych w niewłaściwym miejscu i zobaczysz następujący błąd: dbpath (/ data / db /) nie istnieje, przerywanie.
fady mohamed osman
źródło
Świetny link. Dokładnie rozwiązał problem.
jaketrent
1
Odpowiedź jest teraz powyżej.
fady mohamed osman
2
jak uruchomić to jako użytkownik mongodb?
user4951,
Po prostu dodaj siebie do grupy mongodb: useradd -G mongodb fady zamień fady na swoją nazwę użytkownika.
fady mohamed osman
2
Musiałem skorzystać zarówno z informacji zawartych w tej odpowiedzi, jak iz odpowiedzi @boulder_ruby. To dlatego, że brakowało mojego „/ data / db /”. Może to dobra aktualizacja, aby ta odpowiedź była bardziej kompletna.
Fabricio Buzeto
32
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

Tutaj wszystko, czasami potrzeba trochę czasu, aby uruchomić mongo po wykonaniu tych operacji.

Rubyrider
źródło
Jeśli spróbuję `sudo -u mongodb mongod -f /etc/mongodb.conf --repair`, oto co otrzymam:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Aleksandrus
21

Próbuję uruchomić $ mongod

Jeśli pojawi się błąd, taki jak

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

Następnie napotkałeś podstawowy błąd uruchamiania, który jest dość powszechny.

Domyślnie mongod spróbuje użyć / data / db dla swoich plików baz danych, które w tym przypadku nie istnieją.

Nie możesz zacząć

mongo 

dopóki nie poradzisz sobie

mongod.

Spróbuj utworzyć te katalogi i upewnij się, że są one zapisywalne przez tego samego użytkownika, który uruchamia proces mongod.

** Zobacz podobne pytanie - pojawia się błąd: „Błąd: nie można połączyć się z serwerem powłoki / mongo.js 127.0.0.1” & podczas próby uruchomienia mongodb w systemie Mac OSX lion

boulder_ruby
źródło
możesz również ustawić ścieżkę dbpath w następujący sposób: mongod --dbpath ../data
cbaigorri
20

To właściwie nie jest błąd ... To co się dzieje to fakt, że Mongo polega na demonie aby uruchomić lokalny serwer bazy danych, więc aby "odpalić" serwer mongo w twojej powłoce, musisz uruchomić usługę mongo pierwszy.

W przypadku Fedory Linux (czyli Distro, którego używam), musisz uruchomić następujące polecenia:

1 sudo service mongod start
2 mongo

I masz to! serwer będzie działać. Teraz, jeśli chcesz, aby usługa Mongo uruchamiała się po uruchomieniu systemu, musisz uruchomić:

sudo chkconfig --levels 235 mongod on

I to wszystko! Jeśli to zrobisz, teraz w powłoce wystarczy wpisać mongo , aby uruchomić serwer, ale to prawie wszystko, problem polega na tym, że musisz najpierw uruchomić SERWIS, a następnie SERWER :)

PS Polecenia, które zamieściłem, mogą działać również na innych dystrybucjach Linuksa, nie tylko w Fedorze ... Jeśli nie, może będziesz musiał poprawić kilka słów w zależności od dystrybucji, której używasz;)

Jmlevick
źródło
To samo rozwiązanie dotyczy pytania: stackoverflow.com/questions/7958228/ ...
Jmlevick
Tyle razy się potykam i drapię się po głowie przez długi czas, aż w końcu zdaję sobie sprawę: „och, muszę tylko sudo.”
ben autor
2
oraz dla wariantów Debiana / Ubuntu: sudo service mongodb start
ljs.dev
11

Mam ten sam problem, kiedy próbowałem zainstalować mongo. Otrzymałem błąd jako,

Błąd

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

Rozwiązanie:

Najpierw zainstaluj mongod za pomocą:

sudo apt-get install mongodb-server

Następnie wpisz

mongod --dbpath /mongo/db

Następnie

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

Następnie

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

Dziękuję Ci

Samarth P Shenoy
źródło
Czy ta metoda usunie istniejące bazy danych w Mongo?
Evan
6

Musisz usunąć plik blokujący mongod.locklub /var/lib/mongodb/mongod.lockna Ubuntu, następnie musisz najpierw uruchomić mongod.exelub service mongodb startna Ubuntu, a następnie uruchomić mongo.exelub mongona Ubuntu.

user1391225
źródło
OP jest na Ubuntu, więc jestem prawie pewien, że nie będą używać żadnych .exeplików.
me_and
Otrzymuję ten komunikat o błędzie i nie mogę znaleźć pliku „mongod.lock” w moim systemie plików. Czy te instrukcje dotyczą systemu Mac OSX?
boulder_ruby
5

Albo twój mongod nie działa (sprawdź komendą "ps") albo nasłuchuje na jakimś zewnętrznym adresie IP, a nie na hoście lokalnym. Więc najpierw sprawdź listę procesów, jeśli 'mongod' jest uruchomiony. Jeśli tak, sprawdź za pomocą "netstat -nap" odpowiedni port.

Oczywiście możesz ręcznie uruchomić mongod na konsoli lub nawet zajrzeć do pliku dziennika mongod (jeśli jest skonfigurowany ... w zależności od tego, jak zainstalowałeś mongod).

Andreas Jung
źródło
5

Najpierw musisz się upewnić, że wszystkie pliki i katalogi w twoim folderze / var / lib / mongodb / (lub w jakimkolwiek folderze, na który wskazuje dbpath) należą do użytkownika mongodb i grupy mongodb.

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

(Zastąp nazwę pliku i katalog odpowiednimi nazwami)

Następnie możesz usunąć blokadę, naprawić bazę danych i zrestartować demona, tak jak inne osoby już wspomniały:

sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start
Tom Desair
źródło
Dlaczego nie ma głosów za tym? To było jedyne rozwiązanie spośród pół tuzina wpisów SO, które szukałem, które działało. Dziękuję Panu.
FRD
Polecenie uruchomienia pliku konfiguracyjnego i wymuszenia naprawy znajduje się sudo -u mongodb mongod -f /etc/mongod.conf --repairna Ubuntu 14.
okoboko
5

Najpierw uruchom serwer mongo przez

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

Następnie otwórz kolejne okno terminala i otwórz powłokę

Users-MacBook-Pro:csv1 Admin$ mongo
Tarun Gupta
źródło
2

Sprawdź także, czy na partycji głównej jest wystarczająco dużo miejsca, aby uruchomić mongod.

df -h /

Zobaczysz coś takiego podczas premiery 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
źródło
1

Na Ubuntu spróbuj tego:

sudo invoke-rc.d mongodb start
Zwycięzca
źródło
1

Może to być kombinacja $ PATH i problemu z uprawnieniami.

Spróbuj wykonać poniższe kroki:

Zaktualizuj zmienną $ PATH, aby wskazywała na plik bin MongoDB. W moim przypadku napar zainstaluj MongoDB w tym folderze:

/usr/local/Cellar/mongodb/2.4.6/

Aby zaktualizować zmienną $ PATH, wykonaj następujące czynności:

$ sudo vi /etc/paths

Następnie naciśnij „i”, aby wstawić tekst do Vi i dołącz ścieżkę do bazy danych MongoDB na końcu pliku „ścieżki” i zrestartuj terminal.

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

Użyj 'Esc: w q', aby zapisać i wyjść z edytora Vi.

Użyj echa, aby wyświetlić zmienną ścieżki:

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

Teraz spróbuj sprawdzić wersję Mongo, jeśli śledzisz ją, jesteś na dobrej drodze!

$ mongo --version
MongoDB shell version: 2.4.6

Teraz musimy utworzyć katalog bazy danych. Użyłem domyślnej lokalizacji '/ data / db' sugerowanej w dokumentach MongoDB. Utworzyłem również katalog dziennika, aby uniknąć problemów z uprawnieniami, podczas gdy Mongo próbuje tworzyć dzienniki. Zmień właściciela, a to wystarczy.

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

Teraz utworzymy domyślny plik konfiguracyjny dla MongoDB, który zostanie udostępniony po pierwszym uruchomieniu polecenia „mongod”. Teraz chciałbym również wskazać, że „mongod” uruchomi usługę, która będzie nasłuchiwać przychodzących połączeń danych. Podobnie jest w przypadku wykonania polecenia „$ service mysqld start”. Przejdźmy dalej i utwórzmy plik konfiguracyjny. Pamiętaj, że stworzyłem bardzo podstawowy plik konfiguracyjny. Możesz jednak dodać wiele innych zmiennych, aby skonfigurować MongoDB. Po raz pierwszy gram w MongoDB, więc wiem tyle, ile przeczytałem w dokumentach MongoDB! Utworzyłem „mongodb.conf”.

$ sudo vi /etc/mongodb.conf

Dodaj następujące:

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

Zwróć uwagę, że domyślny port dla serwera MongoDB to 27017. Użyj własnej ścieżki do dbpath i logpath utworzonych w kroku 5. Nie zapomnij zamknąć i zapisać pliku conf.

Teraz jesteśmy gotowi do uruchomienia usługi MongoDB. Otwórz dwie instancje Terminala W Terminalu 1 wpisz:

$ 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

Jeśli otrzymasz powyższą wiadomość, to wiedz, że pomyślnie uruchomiłeś usługę Mongod.

Teraz, aby się z nim połączyć, w Terminalu 2 wpisz:

$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
>

Zignoruj ​​ostrzeżenia, ale udało Ci się połączyć z bazą danych „test”! Fajne!

To wszystko. Zastosowałem to rozwiązanie, gdy po raz pierwszy próbowałem zainstalować kopię MongoDB na moim Macu. Zobacz, czy to też ci pomoże.

Aby uzyskać szczegółowy post, przejdź tutaj - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

Mam nadzieję, że to pomoże!

Pozdrawiam, Chinmay

Chinmay
źródło
Chociaż ten link może odpowiedzieć na pytanie, lepiej jest zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie.
Radim Köhler
@ RadimKöhler, dzięki za ostrzeżenie. Poprawiłem odpowiedź. Mam nadzieję, że to komuś pomoże. Twoje zdrowie.
Chinmay,
1

Rozwiązałem ten problem na Ubuntu 12.04, wykonując następujące czynności:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Usunąłem mongo i zainstalowałem ponownie
4) usługa sudo mongodb restart

i wszystko w porządku

Almas
źródło