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.
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.
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 111:20:33Error: 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.
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;)
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.
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).
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.
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 1217:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 1217:02:59.159 [initandlisten]
Mon Aug 1217:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 1217:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 1217:02:59.159 [initandlisten]
Mon Aug 1217:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 1217:02:59.159 dbexit:
Mon Aug 1217:02:59.159 [initandlisten] shutdown: going to close listening sockets...
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.
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”.
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 316:55:43.527 [initandlisten]
Tue Sep 316: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.
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
mongod
pierwszegoOdpowiedzi:
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
Zwróć uwagę na następujące kwestie:
źródło
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.
źródło
Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
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ąć
dopóki nie poradzisz sobie
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
źródło
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;)
źródło
sudo service mongodb start
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ą:
Następnie wpisz
Następnie
sudo rm /var/lib/mongodb/mongod.lock
Następnie
Dziękuję Ci
źródło
Musisz usunąć plik blokujący
mongod.lock
lub/var/lib/mongodb/mongod.lock
na Ubuntu, następnie musisz najpierw uruchomićmongod.exe
lubservice mongodb start
na Ubuntu, a następnie uruchomićmongo.exe
lubmongo
na Ubuntu.źródło
.exe
plików.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).
źródło
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
źródło
sudo -u mongodb mongod -f /etc/mongod.conf --repair
na Ubuntu 14.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ę
źródło
Sprawdź także, czy na partycji głównej jest wystarczająco dużo miejsca, aby uruchomić mongod.
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...
źródło
Na Ubuntu spróbuj tego:
źródło
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:
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.
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”.
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
źródło
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
źródło