Mongod skarży się, że nie ma folderu /data/db
Używam mojego nowego Maca po raz pierwszy dzisiaj. Podążam za przewodnikiem pierwsze kroki na mongodb.org do momentu utworzenia katalogu/data / db. btw, użyłem homebrew route.
Więc otwieram terminal i myślę, że jestem w tym, co nazwałeś katalogiem domowym, bo kiedy robię "ls", widzę foldery aplikacji desktopowych Filmy Muzyka zdjęcia dokumenty i biblioteka.
Więc zrobiłem
mkdir -p /data/db
Po pierwsze, jest napisane, że odmowa pozwolenia. Zatrzymałem próbuje różnych rzeczy przez pół godziny i w końcu:
mkdir -p data/db
Zadziałało. a kiedy "ls", katalog danych i zagnieżdżone w nim folder db istnieją.
Potem odpalam mongod i narzeka, że nie znajdzie danych / db
Czy zrobiłem coś nie tak?Teraz zrobiłem
sudo mkdir -p /data/db
I kiedy robię " ls " widzę katalog danych i katalog db. wewnątrz db dir jednak nie ma w nim absolutnie nic i kiedy teraz uruchamiam mongod
Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit:
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now
Edytuj Otrzymywanie Komunikatu o błędzie dla
sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument
Dziękuję wszystkim!
27 answers
Stworzyłeś katalog w niewłaściwym miejscu
/ data / db oznacza, że znajduje się bezpośrednio pod katalogiem głównym'/', podczas gdy utworzyłeś' data / db '(bez wiodącego/) prawdopodobnie tylko w innym katalogu, takim jak katalog domowy' / root'.
Musisz utworzyć ten katalog jako root
Albo trzeba użyć sudo
, np. sudo mkdir -p /data/db
Lub musisz zrobić su -
aby zostać superuserem, a następnie utworzyć katalog z mkdir -p /data/db
Uwaga:
MongoDB ma również opcję, w której możesz utworzyć katalog danych w innej lokalizacji, ale generalnie nie jest to dobry pomysł, ponieważ tylko trochę komplikuje takie rzeczy, jak odzyskiwanie DB, ponieważ zawsze musisz ręcznie określić ścieżkę db. Nie polecam tego robić.
Edit:
Wyświetlany komunikat o błędzie to "nie można utworzyć/otworzyć pliku blokady: /data/db/mongod.lock errno:13 odmowa " . Utworzony katalog nie ma odpowiednich uprawnień i praw własności -- musi być zapisywalny przez użytkownika, który uruchamia proces MongoDB.
Aby zobaczyć uprawnienia i własność katalogu '/data/db/', wykonaj następujące czynności: (tak powinny wyglądać uprawnienia i własność)
$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/
Lewa strona 'drwxr-xr-x' pokazuje uprawnienia dla użytkownika, grupy i innych. "mongod mongod" pokazuje, kto jest właścicielem katalogu i która grupa, która katalog należy do. W tym przypadku oba są nazywane "mongod".
Jeśli twój katalog '/ data / db ' nie ma powyższych uprawnień i własności, wykonaj to :
Najpierw sprawdź jakiego użytkownika i grupę posiada użytkownik mongo:
# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false
Powinieneś mieć wpis mongod w /etc / passwd, ponieważ jest to demon.
sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db # using the user-id , group-id
Możesz również użyć nazwy użytkownika i nazwy grupy, w następujący sposób: (można je znaleźć w /etc / passwd i/etc / group)
sudo chown -R mongod:mongod /data/db
To powinno działa..
W komentarzach poniżej niektórzy używali tego:
sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db
Lub
sudo chown -R $USER /data/db
sudo chmod -R go+w /data/db
Wadą jest to, że $USER jest kontem posiadającym powłokę logowania. Demony nie powinny mieć powłoki ze względów bezpieczeństwa, dlatego widzisz /bin / false w grepie pliku hasła powyżej.
Sprawdź tutaj, aby lepiej zrozumieć znaczenie uprawnień katalogu:
Http://www.perlfect.com/articles/chmod.shtml
Może też zapoznaj się z jednym z samouczków, które możesz znaleźć za pośrednictwem Google:"UNIX dla początkujących"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-16 18:23:34
Po otrzymaniu tego samego błędu co Nik
Chown: id-u: Invalid argument
Dowiedziałem się, że wynika to z użycia niewłaściwego typu cudzysłowów (powinno być backquotes) Ubuntu Forums
Zamiast tego użyłem
Sudo chown $USER / data / db
Jako alternatywa i teraz mongod ma potrzebne uprawnienia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 12:22:42
To działa dla mnie, znaleziono w komentarzach:
sudo chown -R $USER /data/db
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 13:44:28
Utwórz folder.
sudo mkdir -p /data/db/
Daj sobie pozwolenie na folder.
sudo chown `id -u` /data/db
Następnie można uruchomić mongod
Bez sudo
. Działa na OSX Yosemite
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-24 17:12:39
Aby naprawić ten błąd na OS X, uruchomiłem ponownie i zatrzymałem usługę:
$ brew services restart mongodb
$ brew services stop mongodb
Błąd pojawił się po aktualizacji pakietu MongoDB homebrew.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-28 15:44:33
Jeśli uruchamiasz mongo bez argumentów, Zakładamy, że działasz na maszynie produkcyjnej, więc używasz domyślnych lokalizacji.
Za korzystanie z własnej bazy danych (dev lub po prostu innej):
./bin/mongod --dbpath ~/data/db
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 13:16:42
Instalacja przez brew na Macu gdzie YOUR_USER_NAME i staff jest grupą
sudo mkdir -p /data/db
sudo chmod +x+r+w /data/db/
sudo touch /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db
sudo chmod +x+r+w /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 09:41:23
Miałem taki problem z istniejącą konfiguracją Mongodb. Nadal nie jestem pewien, dlaczego to się stało, ale z jakiegoś powodu proces Mongod nie mógł znaleźć mongod.plik konfiguracyjny. Ponieważ nie mógł znaleźć pliku konfiguracyjnego, próbował znaleźć pliki DB w/data / db, folderze, który nie istniał. Jednak plik konfiguracyjny był nadal dostępny, więc upewniłem się, że proces ma uprawnienia do pliku konfiguracyjnego i uruchomiłem proces mongod z flagą --config w następujący sposób:
mongod --config /etc/mongod.conf
W samym pliku konfiguracyjnym Miałem takie ustawienie:
storage:
dbPath: /var/lib/mongodb
I w ten sposób proces mógł ponownie znaleźć prawdziwy folder DB.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-15 22:33:10
Zrobiłem
brew install mongodb
W dniu 2018-02-01 i to dało mi mongodb
wersję 3.6.2.
Wywołany przez odpowiedź od orluke powyżej, próbowałem tylko
$ brew services restart mongodb
I wszystko zrodziło się w życiu. Mój telefon zrobił to, co chciałem. [[20]}GUI MongoDB Compass , wersja community, połączy się. Użyłem kompasu, aby spojrzeć na kolekcję local.startup_log
. To, że miał JEDEN dokument, dziennik mnie właśnie rozpoczynającego usługę mongoDB, i że miał
cmdLine:Object
config:"/usr/local/etc/mongod.conf"
I rzeczywiście był taki plik:
$ more /usr/local/etc/mongod.conf
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
I był /usr/local/var/mongodb
katalog z mnóstwem niejasnych plików. Tak wygląda teraz instalacja.
Nie jestem pewien, czy brew services restart
ustawia usługę do uruchomienia przy logowaniu. Więc zrobiłem
brew services stop mongodb
brew services start mongodb
I miałem nadzieję, że uruchomi się ponownie po ponownym uruchomieniu. I rzeczywiście tak było. W rzeczywistości, teraz myślę, że właściwą rzeczą do zrobienia po początkowej instalacji jest
brew services start mongodb
I to powinno uruchomić usługę i zrestartować ją po restart.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 09:23:16
Chciałem tylko zaznaczyć, że jeśli spróbujesz tego i natkniesz się na mkdir: /data/db: Read-only file system
, zobacz ten komentarz, który mi pomógł: https://stackoverflow.com/a/58895373 .
W ten sposób, jeśli ktoś jest na tej odpowiedzi i nie kontroluje F dla "tylko do odczytu", zobaczą to
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-12 16:39:09
Twoje polecenie utworzy strukturę katalogów w bieżącym folderze, a nie katalogu głównym twojego komputera (którym jest brakująca /
).
Pierwsze polecenie było poprawne, ale ponieważ próbujesz utworzyć folder w /
, który jest chronionym katalogiem, musisz go przedrostkiem sudo
, co jest skrótem od "superuser do". Zostaniesz poproszony o podanie hasła.
Więc pełna Komenda brzmiałaby:
$ sudo mkdir -p /data/db
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-31 00:37:18
Próbujesz utworzyć katalog, do którego nie masz dostępu root.
Do testowania mongodb, po prostu używam katalogu z mojego katalogu użytkownika, takiego jak:
cd
mkdir -p temp/
mongod --dbpath .
Spowoduje to utworzenie bazy danych mongo w temp / z bieżącego katalogu roboczego
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-31 03:10:30
Rozwiązałem ten sam problem, tworząc foldery / data / db za pomocą menedżera okien. Próbowałem to zrobić za pomocą terminala na początku, a aby utworzyć folder w katalogu głównym, musiałem użyć sudo.
Po prostu poszedłem do katalogu głównego za pomocą Findera i utworzyłem nowy folder za pomocą 'New Folder'. Na mnie zadziałało.
Uwaga: używam OSX.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-18 06:16:30
Musisz stworzyć /Dane / db ... jest to katalog o nazwie / data / w katalogu głównym (tj. /) i tam podfolder o nazwie / db / ...
Dostajesz błędy uprawnień ponieważ musisz użyć sudo aby utworzyć direotry w katalogu głównym w systemie MacOS sudo pozwala uruchamiać polecenia jako administrator.
Więc uruchom to ...$ sudo mkdir -p /data/db
To wyświetli monit o hasło, jest to to samo hasło, którego używasz do zmiany Ustawienia systemowe (to małe okno dialogowe, które otwiera się, gdy próbujesz zmienić rzeczy w Preferencjach systemowych dla ecample), i prawdopodobnie tak samo, jak używasz do logowania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-31 00:38:05
Tylko krótka notka:
Jeśli próbowałeś uruchomić mongod bez uprzedniej zmiany uprawnień, prawdopodobnie będziesz mieć mongod.Zablokuj plik (i kilka innych plików) w katalogu/data / db. Nawet po zmianie uprawnień dla katalogu / data / db, aby dać dostęp do użytkownika$, nadal będziesz otrzymywać "nie można utworzyć / otworzyć pliku blokady: / data/db / mongod.lock errno:13 Permission denied " błąd. Uruchom ls-al /data / db i prawdopodobnie zobaczysz, że uprawnienia dla poszczególnych plików są nadal ustawione na root dla użytkownika, a nie na $USER. Powinieneś usunąć mongod.lock file, i inne, jak również. Następnie po ponownym uruchomieniu mongod, wszystko powinno działać i możesz sprawdzić, czy uprawnienia do plików pasują do praw do katalogów, uruchamiając ponownie LS-al.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-09 16:31:33
Utwórz katalog w katalogu głównym
sudo mkdir -p /data/db
Teraz zmień właściciela
sudo chown -R $USER /data
Możesz iść!
mongod
Zamiast używać sudo mongod
, nie musisz umieszczać wszystkiego hasła, ale dla prawdziwego projektu powinieneś użyć sudo mongod
, nie daj uprawnień normalnemu użytkownikowi!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-28 08:47:36
Podczas próby uruchomienia mongodb otrzymywałem następujący błąd.
"shutting down with code:100"
Używałem następującego polecenia:
./mongod --dbpath=~/mongo-data
Poprawką dla mnie było to, że nie potrzebowałem znaku " = " i to powodowało błąd. So I did
./mongod --dbpath ~/mongo-data
Po prostu chciałem to wyrzucić, ponieważ błąd w żaden sposób nie określa, że to jest problem. Prawie usunąłem zawartość katalogu ~ / mongo-data, aby sprawdzić, czy to pomogło. Cieszę się, że przypomniałem sobie, że cli args czasami nie używają" =" podpisz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-11 15:46:26
Do tej pory myślałem również, że musimy stworzyć folder / data / db do uruchomienia komendy mongod.
Ale Ostatnio próbowałem uruchomić mongod z poleceniem service i zadziałało na mnie i nie było potrzeby tworzenia katalogu /data/db.
service mongod start
Aby sprawdzić status mongod można uruchomić następujące polecenie.
service mongod status
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-26 09:28:27
To rozwiązanie rozwiązuje mój problem
-
Utwórz katalog jako
Sudo mkdir-p/data / db
-
Spowoduje, że katalog zostanie nazwany db i spróbuje zacząć od komend
Sudo mongod
Jeśli pojawi się kolejny błąd lub problem z uruchomieniem mongod, możesz znaleźć problem jako
Nie udało się skonfigurować listener: SocketException: adres już używany Jeśli okaże się, że inny błąd niż trzeba zabić uruchomiony proces mongod poprzez wpisanie do terminala jako
ps ax | grep mongod
sudo kill ps_number
I znaleźć uruchomiony Port mongod i zabić proces. Innym sposobem jest utworzenie portu specefic podczas uruchamiania mongod jako
sudo mongod --port 27018
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-03 09:25:09
Wpisz " id " na terminalu, aby zobaczyć dostępne identyfikatory użytkowników, które możesz podać, Następnie po prostu wpisz
"sudo chown -R idname /data / db"
To mi się udało! Mam nadzieję, że to rozwiąże twój problem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-30 13:53:20
W bardziej aktualnych wersjach MongoDB, mam 3.2.10, jest on domyślnie zapisany w
/var/lib/mongodb
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 04:09:08
Jeśli używasz Mac ' a i używasz Cataliny i zainstalowałeś Mongodb przez Homebrew to co musisz zrobić, aby rozpocząć, to po prostu wpisz to polecenie i gotowe.
brew services start mongodb-community
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-08 07:12:02
Po zainstalowaniu pakietu narzędzi otrzymałem podobny błąd na urządzeniu z systemem Windows 10;
Wyjątek w initAndListen: NonExistentPath: katalog danych C:\data\db \ nie znaleziono., zakończenie
Rozwiązanie
Analogicznie do tego, co wyjaśniono dla Systemów linux: wystarczy zrobić folder, aby móc uruchomić mongod.exe
(mongoDB server).
Pomyślałem, że zostawię to dla osób, które kończą tutaj z tymi samymi wyszukiwanymi słowami na urządzeniu z systemem Windows.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-22 20:04:46
Jest naprawdę głupi sposób, aby stworzyć ten problem, który byłem pionierem:
1) zostaw na chwilę instalację mongo 2) wróć a serwer nie działa 3) Spróbuj go uruchomić, ale nie używaj sudo tym razem 4) mongo nie może znaleźć danych / db/, ponieważ teraz szuka w katalogu domowym użytkownika zamiast su home dir
Tak, to jest naprawdę głupie, ale jeśli minęło trochę czasu, odkąd byłeś w systemie, może cię potknąć.
Krótka odpowiedź: upewnij się, że uruchomisz mongo z tym samym domowy katalog
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-21 15:48:49
Począwszy od MongoDB 4.4, Narzędzia bazy danych MongoDB są teraz wydawane oddzielnie od serwera MongoDB.
Musisz pobrać: https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools
Następnie kopiujesz wszystkie pliki do /usr/bin
i wszystkie linie poleceń będą dostępne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-17 19:03:08
Tilo ma dla mnie odpowiedź, która działała do tej pory:
sudo chown -R 126:135 /data/db
Musiałem użyć:
sudo chown -R $USER /data/db
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-19 07:48:06
MongoDB może być mylące w odniesieniu do folderu dbPath
.
Kiedy uruchamiasz mongod
Bez dbpath
wtedy domyślną ścieżką jest /data/db
Jednak gdy uruchamiasz go jako usługę, np. systemctl start mongod
wtedy odczytuje on plik konfiguracyjny, typowo /etc/mongod.cfg
i w tym pliku konfiguracyjnym domyślne wartości to
Platforma | Menedżer Pakietów | Default storage.dbPath
|
---|---|---|
RHEL / CentOS i Amazon | yum | /var/lib/mongo |
SUSE | zypper | /var/lib/mongo |
Ubuntu i Debian | apt | /var/lib/mongodb |
macOS | napar | /usr/local/var/mongodb |
Tak więc, przez przypadek Twój MongoDB próbuje uzyskać dostęp do różnych folderów danych w zależności od tego, jak uruchomisz usługę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-03 16:00:01