nie można uruchomić lokalnego serwera mongodb


167

Jestem nowy w mongodb .. kiedy próbowałem uruchomić lokalny serwer mongodb z mongodpoleceniem, którego nie udało się uruchomić i wyrzuciłem ten błąd.

/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

Próbowałem usunąć mongod.lockplik ... Uruchomiłem mongod --repair... Zmieniłem również uprawnienia do mongod.lockpliku.

ale wydaje się, że nic nie działa .. ciągle pokazuje ten sam błąd .. co mam zrobić.?

Zainstalowałem też git w wersji 1.7.4.1, ale pokazuje ona błędną wersję nogitversion.


Miałem ten sam problem i to rozwiązanie działało dla mnie stackoverflow.com/questions/5798549/…
Eddie

Odpowiedzi:


176

Próbować:

sudo service mongod stop
sudo mongod

Aby zatrzymać bieżącą aktywną usługę mongodb, umożliwiając następnie uruchomienie nowej


1
Otrzymałem również komunikat serwisowy, ale postanowiłem go zignorować i spróbować ponownie uruchomić za pomocą „sudo mongod” i po tym, jak w końcu zadziałało
kpierce8

2
Czy nie powinno to być mongod (nie mongodb)? Na podstawie docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ ...
xavier

5
sudo service mongodb stoppracował dla mnie na Ubuntu 14.10.
Joe Corneli

1
W systemie OS X nie ma polecenia usługi. Jeśli masz zainstalowane mongo przez homebrew, możesz użyć brew services. (via unix.stackexchange.com/questions/155715/… )
Charlie Stanard

1
@HarshaMV `przystanek usług parzenia <formula>`
Jacob

149

Nie zabijaj procesu przy użyciu sygnału -9, ponieważ spowodowałoby to uszkodzenie: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Użyj sudo killall -15 mongodzamiast tego


2
To nie odpowiada na pierwotne pytanie.
Beau Grantham

8
killall mongodrobi to samo. -15mówi killallwysłać sygnał SIGTERM, który robi to domyślnie.
T Blank

4
Właściwie wykonanie killall faktycznie zadziałało dla mnie, zamiast próbować zatrzymać usługę. Tak więc, mimo że nie odpowiada na pytania. To było przydatne
André Pena,

59

Andreas Jung:

„Sat Jun 25 09:38:51 [initandlisten] listen (): bind () failed errno: 98 Adres już używany dla gniazda: 0.0.0.0:27017

mówi samodzielnie.

Inna instancja mongod już działa i przydziela domyślny port MongoDB, czyli 27017.

Zabij drugi proces lub użyj innego portu. "

W takim przypadku wpisz następujące polecenie

ps wuax | grep mongo

Powinieneś zobaczyć coś, co wygląda tak

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

Teraz wprowadź polecenie kill dla instancji mongod (w tym przypadku 31936):

kill 31936

29

Sat 25 czerwca 09:38:51 [initandlisten] listen (): bind () failed errno: 98 Adres już używany dla gniazda: 0.0.0.0:27017

mówi samodzielnie.

Inna instancja mongod już działa i przydziela domyślny port MongoDB, czyli 27017.

Zabij drugi proces lub użyj innego portu.


47
Znalazłem to na stronie startowej ... ** Gdy mongodb ** jest instalowany przez aptitude, już działa (więc w przykładzie nie musisz go uruchamiać). Następnie po prostu wpisz: $ mongo .. ponieważ osobiście nie uruchomiłem mongod i korzystałem z samouczka szybkiego startu .. nie wiedziałem, że już działa ...
sakthig

@Sakti: Tak, już działa dla mnie! Myślę, że zrobiłem to dzięki umiejętnościom. Dzięki!
sk8terboi87

29

Dowiedz się z netstat, który proces uruchamia port mongodb (27017)

Komenda:

sudo netstat -tulpn | grep :27017

Wynik będzie:

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

W moim przypadku "6432" to pid, w twoim przypadku może być inaczej. Następnie zakończ ten proces za pomocą następującego polecenia:

sudo kill <pid>

Otóż ​​to!


25

Posługiwać się:

sudo killall mongod

Spowoduje to zatrzymanie serwera.

Następnie uruchom ponownie mongodo:

sudo service mongod restart

powinno działać.


23

Masz już uruchomiony proces. Możesz go zabić poleceniem:

killall mongod

15

Chcesz zrobić killall -15 mongod, ponieważ jest on nadal działa: Address already in use for socket: 0.0.0.0:27017.

Wtedy możesz mongodznowu biec .


Dlaczego nie po prostu killall mongod?
Dmitri Zaitsev

1
No matching processes belonging to you were found
retrovertigo

Wtedy mongod nie może być działającym procesem. Być może adres jest używany przez inny proces
John Ottenlips

7

Wypróbuj inny port, jeśli nie możesz znaleźć żadnych aktualnie uruchomionych procesów lub ich zabicie nie działa. Na przykład spróbuj 27018, ponieważ wartość domyślna to 27017.

mongod  --port 27018

Dowiedziałem się tego z poleceniem mongod --help


7

Proponuję zamiast tego użyć:

$sudo service mongodb stop

To może zadziałać.


6

Spróbuj albo killall -15 mongod / killall mongod Nawet po tym, jeśli to nie zadziała, usuń folder przechowywania db, wpisując następujące polecenia sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Monitor aktywności , poszukaj mongod , przejdź przez niego. następnie uruchom ponownie mongod. problem rozwiązany.


OP nie określa systemu operacyjnego, ale pliki dziennika wyraźnie wskazują system Linux.
Nic Nilov

4

Otwórz terminal i wpisz:

mkdir -p /data/db

Następnie wprowadź:

mongod

3

Miałem ten sam problem, gdy próbowałem otworzyć nową instancję mongod i mówiła, że ​​już działa.

Sprawdziłem dokumenty i powiedziałem, żeby pisać

mongo
use admin
db.shutdownServer()

3

Nie można uruchomić bazy danych MongoDB głównie z powodu nieczystego wyłączenia. Aby temu zaradzić, usuń plik mongod.lock. Ten plik znajduje się w folderze danych.

Dowiedz się, gdzie znajduje się folder danych, przeglądając plik mongodb.conf lub mongod.conf. (Plik konfiguracyjny w / etc w systemach Linux).

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

Na przykład, używając powyższej konfiguracji, plik znajduje się pod adresem /var/lib/mongodb/mongod.lock. Po prostu usuń go i uruchom ponownie mongodb.


1
Zdarzyło mi się to więcej niż raz, zwłaszcza na serwerach w chmurze, które zostały „twardy reset”, gdy nie odpowiadały. Jest to łatwe rozwiązanie i powinno być najlepszą odpowiedzią.
SevakPrime,

2

Zmierzyłem się z tym samym problemem. Chociaż mongodbusługa nie działa, w dzienniku pojawił się address already in usekomunikat.

 $netstat -tulpn | grep :27017 

nic nie zwraca

Po dalszej analizie stwierdzono, że przyczyną problemu był plik blokady. Usługa działa poprawnie, po usunięciu pliku blokady i ponownym uruchomieniu go.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

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

$service mongod start

2

Sprawdź dzienniki w /var/log/mongodb/mongod.log i spróbuj wydedukować błąd. W moim przypadku tak było

Nie udało się odłączyć pliku gniazda /tmp/mongodb-27017.sock errno: 1 Operacja niedozwolona

Usunięto /tmp/mongodb-27017.sock i zadziałało.


1

próbować

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

--dbpath (powinna następować ścieżka do Twojej bazy danych)


1

Możliwe, że serwer już działa. Sprawdź to za pomocą polecenia, czy mongo działa, czy nie.


1

Aby rozwiązać problem w systemie Windows , poniższe kroki działają dla mnie:

Na przykład zainstalowana jest mongoDB w wersji 3.6, a ścieżka instalacyjna MongoDB to „D: \ Program Files \ MongoDB”.

Utwórz folder D: \ mongodb \ logs, a następnie utwórz plik mongodb.log w tym folderze.

Uruchom cmd.exe jako administrator ,

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

Usuń te dwa pliki mongod.locki storage.bsonprzejdź do folderu „D: \ mongodb \ data”.

Następnie wpisz net start MongoDBcmd z uprawnieniami administratora, problem zostanie rozwiązany.


0

Pokazuje błąd nasłuchiwanie (): bind () nie powiodło się errno: 98 Adres już używany dla gniazda: 0.0.0.0:27017 tj. Adres 27017 jest już używany przez inną usługę. sprawdź to poleceniem "netstat -apt | grep" 27017 ""


0

(Jeśli używasz Linuksa,) if

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

lub

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

nie rozwiązał problemu, wyloguj się i zaloguj ponownie . To rozwiązało mój problem.

Chyba możesz też zabić proces ręcznie z poziomu terminala.


0

Wygląda na to, że ten sam błąd jest wyświetlany w dziennikach, gdy brakuje ustawienia środowiska LC_ALL. To mylące, ale możesz uruchomić mongoklienta, aby zobaczyć, że jest to problem.


0

jeśli uruchamiasz mongo po raz pierwszy, możesz najpierw ustawić ścieżkę

mongod --dbpath <path to the directory>

0

Zabijanie nie rozwiązało mojego problemu. Mój Mac się zawiesił i po ponownym uruchomieniu niektóre pliki blokujące (mongod.lock, WiredTiger.lock) były obecne w mongo dbPath. Przeniosłem te pliki do innego folderu (nie usunąłem, aby uniknąć więcej problemów), a potem zadziałało. Na gwiazdce sukcesu usunąłem przeniesione pliki blokady.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.