Dzisiaj używam mojego nowego komputera Mac. Postępuję zgodnie z przewodnikiem wprowadzającym na mongodb.org aż do kroku, w którym tworzy się katalog / data / db. btw, skorzystałem z trasy homebrew.
Otwieram więc terminal i myślę, że jestem w tak zwanym katalogu domowym, ponieważ kiedy robię „ls”, widzę foldery aplikacji komputerowych Filmy Muzyka Zdjęcia Dokumenty i Biblioteka.
Więc zrobiłem
mkdir -p /data/db
po pierwsze, mówi, że odmówiono zgody. Próbowałem różnych rzeczy przez pół godziny i wreszcie:
mkdir -p data/db
pracował a kiedy „ls”, katalog danych i zagnieżdżony w nim folder db istnieją.
następnie odpalam mongod i narzeka, że nie znalazłem danych / db
Czy zrobiłem coś złego?
Teraz zrobiłem
sudo mkdir -p /data/db
a kiedy wykonuję „ls”, widzę katalog danych i katalog db. jednak w db dir nie ma 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
EDYCJA Pobieranie komunikatu o błędzie dla
sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument
Dziękuję wszystkim!
grep mongo /etc/passwd /etc/group
. Jeśli to nie zadziała, sprawdź nazwę, sprawdzając właściciela kataloguls -ld /var/lib/mongo
. Lub zobaczyć uid / gid to zrobić:ls -lnd /var/lib/mongo
. W moim przypadkudrwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...
- oznacza to użycie parametru 487: 480 jako parametruOdpowiedzi:
Utworzyłeś katalog w niewłaściwym miejscu
/ data / db oznacza, że znajduje się bezpośrednio w katalogu głównym „/”, podczas gdy „data / db” (bez wiodącego /) prawdopodobnie znajduje się tylko w innym katalogu, takim jak katalog główny „/ root”.
Musisz utworzyć ten katalog jako root
Musisz użyć
sudo
, npsudo mkdir -p /data/db
Lub musisz zrobić,
su -
aby zostać superużytkownikiem, a następnie utworzyć katalog za pomocąmkdir -p /data/db
Uwaga:
MongoDB ma również opcję, w której możesz utworzyć katalog danych w innej lokalizacji, ale ogólnie nie jest to dobry pomysł, ponieważ tylko nieco komplikuje takie rzeczy, jak odzyskiwanie bazy danych, ponieważ zawsze musisz ręcznie określić ścieżkę db. Nie poleciłbym tego robić.
Edytować:
pojawia się komunikat o błędzie „Nie można utworzyć / otworzyć pliku blokady: /data/db/mongod.lock errno: 13 Odmowa dostępu” . Utworzony katalog nie wydaje się mieć odpowiednich uprawnień i 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ść)
Lewa strona „drwxr-xr-x” pokazuje uprawnienia użytkownika, grupy i innych. „mongod mongod” pokazuje, kto jest właścicielem katalogu i do której grupy należy ten katalog. Oba są w tym przypadku nazywane „mongod”.
Jeśli katalog „/ data / db” nie ma powyższych uprawnień i praw własności, wykonaj następujące czynności :
Najpierw sprawdź, jaki użytkownik i grupa ma użytkownik mongo:
Powinieneś mieć wpis dla mongod w / etc / passwd, ponieważ jest to demon.
Możesz także użyć nazwy użytkownika i nazwy grupy w następujący sposób: (można je znaleźć w / etc / passwd i / etc / group)
to powinno sprawić, że zadziała ...
W komentarzach poniżej niektóre osoby tego używały:
lub
Wadą jest to, że $ USER to konto, które ma powłokę logowania. Ze względów bezpieczeństwa demony nie powinny mieć powłoki, dlatego w pliku grep pliku hasła powyżej widać / bin / false.
Sprawdź tutaj, aby lepiej zrozumieć znaczenie uprawnień do katalogu:
http://www.perlfect.com/articles/chmod.shtml
Być może zapoznaj się także z jednym z samouczków, które można znaleźć w Google: „UNIX dla początkujących”
źródło
ls -ld /data/
ils -ld /data/db/
.. zobaczysz uprawnienia do katalogu wymienione po lewej stronie, następnie własność, a następnie nazwę katalogu. powinieneś upewnić się, że katalogi są zapisywalne przez identyfikator użytkownika, który uruchamia MongoDB.invalid arguement
sudo touch /data/db/mongod.lock
isudo chmod 0777 /data/db/mongd.lock
. Zaczęła od razu.sudo chown -R `id -u` /data/db
lubsudo chown -R $USER /data/db
zamiastsudo chown mongod:mongod /data/db
wystarczyły dla mniePo uzyskaniu tego samego błędu co Nik
I okazało się to najwyraźniej wystąpił z użyciem niewłaściwego typu cudzysłowie (powinno być małe cudzysłowy ) użytkowników Ubuntu
Zamiast tego właśnie użyłem
jako alternatywa, a teraz mongod ma potrzebne uprawnienia.
źródło
To działa dla mnie, znalezione w komentarzach:
źródło
Utwórz folder.
Pozwól sobie na folder.
Wtedy możesz biegać
mongod
bezsudo
. Działa na OSX Yosemiteźródło
bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
Aby naprawić ten błąd w systemie OS X, ponownie uruchomiłem i zatrzymałem usługę:
$ brew services restart mongodb $ brew services stop mongodb
Potem pobiegłem
mongod --config /usr/local/etc/mongod.conf
i problem zniknął.Błąd wydawał się pojawiać po aktualizacji pakietu homebrew mongodb.
źródło
Instalowanie poprzez brew na Macu, gdzie grupa YOUR_USER_NAME i personel to
źródło
/etc/passwd
nazwę użytkownika - grupa prawdopodobnie będzie identyczna. Zwykle jest tomongo
albomongodb
.Jeśli uruchamiasz mongo bez argumentów, zakładasz, że działasz na maszynie produkcyjnej, więc użyj domyślnych lokalizacji.
do korzystania z własnej bazy danych (programistycznej lub innej):
źródło
Miałem ten problem z istniejącą konfiguracją Mongodb. Nadal nie jestem pewien, dlaczego tak się stało, ale z jakiegoś powodu proces Mongod nie mógł znaleźć pliku mongod.config. 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:
W samym pliku konfiguracyjnym miałem to ustawienie:
W ten sposób proces może ponownie znaleźć prawdziwy folder DB.
źródło
Zrobiłem
01.02.2018 i to dało mi
mongodb
wersję 3.6.2.Poproszony przez odpowiedź od orluke powyżej, próbowałem tylko
i wszystko ożyło. Mój
mongoose.createConnection()
telefon zrobił to, co chciałem. GUI MongoDB Kompas , wersja społeczność, by połączyć. Użyłem Compassa, żeby obejrzećlocal.startup_log
kolekcję. Miał jeden dokument, dziennik, w którym właśnie uruchomiłem usługę mongoDB, i tak też byłoi rzeczywiście był taki plik:
i był
/usr/local/var/mongodb
katalog z dużą ilością niejasnych plików. Wydaje się, że tak właśnie działa teraz instalacja.Nie jestem pewien, czy
brew services restart
ustawia uruchomienie usługi przy logowaniu. Więc zrobiłemi mam nadzieję, że to uruchomi się ponownie po ponownym uruchomieniu. I rzeczywiście tak się stało. Właściwie teraz uważam, że właściwą rzeczą jest po pierwszej instalacji
i to powinno uruchomić usługę i zrestartować ją po ponownym uruchomieniu.
źródło
Twoje polecenie utworzy strukturę katalogów w bieżącym folderze, a nie katalog główny komputera (czego brakuje
/
).Pierwsze polecenie było słuszne, ale ponieważ próbujesz utworzyć folder
/
, który jest chronionym katalogiem, musisz go poprzedzićsudo
, co jest skrótem od „superuser do”. Zostaniesz poproszony o podanie hasła.Zatem pełne polecenie brzmiałoby:
źródło
Musisz utworzyć / data / db ... czyli katalog o nazwie / data / w katalogu głównym (tj. / ) I podfolder w tym katalogu o nazwie / db / ...
Występują błędy uprawnień, ponieważ musisz użyć sudo, aby utworzyć katalog główny w katalogu głównym w systemie MacOS, sudo pozwala uruchamiać polecenia jako administrator.
Więc uruchom to zamiast ...
Pojawi się monit o podanie hasła, to samo hasło, którego używasz do zmiany ustawień systemu (to małe okno dialogowe, które otwiera się, gdy próbujesz zmienić rzeczy w Preferencjach systemowych na przykład), i prawdopodobnie takie samo, jak przy logowaniu.
źródło
Próbujesz utworzyć katalog, do którego nie masz uprawnień roota.
Do testowania mongodb używam tylko katalogu z mojego katalogu użytkownika, takiego jak:
Spowoduje to utworzenie bazy danych mongo w temp / z bieżącego katalogu roboczego
źródło
Rozwiązałem ten sam problem, tworząc foldery / data / db za pomocą menedżera okien. Najpierw próbowałem to zrobić przez terminal, a żeby utworzyć folder w katalogu głównym, musiałem użyć sudo.
Właśnie poszedłem do katalogu głównego za pomocą Findera i utworzyłem nowy folder za pomocą „New Folder”. Totally dla mnie pracował.
Uwaga: używam OSX.
źródło
Krótka uwaga:
Jeśli próbowałeś uruchomić mongod bez uprzedniej zmiany uprawnień, prawdopodobnie będziesz mieć plik mongod.lock (i kilka innych plików) w katalogu / data / db. Nawet po zmianie uprawnień do katalogu / data / db w celu umożliwienia dostępu do $ USER nadal będziesz otrzymywać komunikat „Nie można utworzyć / otworzyć pliku blokady: /data/db/mongod.lock errno: 13 Odmowa dostępu „błąd. Uruchom ls -al / data / db, a prawdopodobnie zobaczysz, że uprawnienia dla poszczególnych plików są nadal ustawione na rootowanie dla użytkownika, a nie dla twojego $ USER. Powinieneś usunąć plik mongod.lock, a także inne. Następnie, gdy uruchomisz ponownie mongod, wszystko powinno działać i możesz sprawdzić, czy uprawnienia do plików są zgodne z uprawnieniami do katalogu, ponownie uruchamiając ls -al.
źródło
Utwórz katalog w katalogu głównym
Teraz zmień właściciela
Możesz iść!
zamiast używać
sudo mongod
, nie musiszsudo mongod
podawać hasła za każdym razem, ale w prawdziwym projekcie, którego powinieneś użyć , nie udzielaj pozwolenia zwykłemu użytkownikowi!źródło
Podczas próby uruchomienia mongodb ciągle pojawiał się następujący błąd.
Korzystałem z następującego polecenia:
Dla mnie poprawka polegała na tym, że nie potrzebowałem znaku „=”, co powodowało błąd. Więc zrobiłem
Chciałem to wyrzucić, ponieważ błąd w żaden sposób nie wskazuje, że to jest problem. Prawie usunąłem zawartość katalogu ~ / mongo-data, aby zobaczyć, czy to pomogło. Cieszę się, że pamiętam, że czasami argumenty cli nie używają znaku „=”.
źródło
Do tej daty myślałem również, że musimy utworzyć ten folder / data / db, aby uruchomić komendę mongod.
Ale ostatnio próbowałem uruchomić mongod poleceniem service i zadziałało to dla mnie i nie było potrzeby tworzenia katalogu / data / db.
Aby sprawdzić status mongod, możesz uruchomić następującą komendę.
źródło
To rozwiązanie rozwiązuje mój problem
Utwórz katalog jako
sudo mkdir -p / data / db
Spowoduje to utworzenie katalogu o nazwie db, a następnie spróbuje rozpocząć od poleceń
sudo mongod
Jeśli pojawi się kolejny błąd lub problem z uruchomieniem mongod, możesz znaleźć problem jako
i znajdź działający port mongod i zabij ten proces. Innym sposobem jest utworzenie określonego portu podczas uruchamiania mongod as
źródło
Wpisz „id” na terminalu, aby zobaczyć dostępne identyfikatory użytkowników, które możesz podać, a następnie po prostu wpisz
„sudo chown -R idname / data / db”
To mi się udało! Mam nadzieję, że to rozwiąże problem.
źródło
W bardziej aktualnych wersjach MongoDB, mam 3.2.10, domyślnie jest przechowywany
/var/lib/mongodb
źródło
mongod --dbpath /var/lib/mongodb
pomaga w tych okolicznościachPo (ponownej) instalacji pakietu narzędzi dostałem podobny błąd na urządzeniu z systemem Windows 10;
Rozwiązanie Analogiczne do objaśnionego dla systemów Linux: po prostu utworzenie folderu jest wystarczające, aby móc uruchomić
mongod.exe
(serwer mongoDB).Pomyślałem, że mogę zostawić to osobom, które kończą tutaj z tymi samymi wyszukiwanymi hasłami na urządzeniu z systemem Windows.
źródło
Chciałem tylko zaznaczyć tutaj, że jeśli spróbujesz tego i napotkasz
mkdir: /data/db: Read-only file system
, zapoznaj się z tym komentarzem, który pomógł mi: https://stackoverflow.com/a/58895373 .W ten sposób, jeśli ktoś będzie na tej odpowiedzi i użyje Kontroli F dla „tylko do odczytu”, to zobaczy
źródło
Istnieje naprawdę głupi sposób, aby stworzyć ten problem, który zapoczątkowałem:
1) zostaw instalację mongo na chwilę 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 katalog domowy użytkownika zamiast katalogu domowego
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 korzystasz z mongo z tym samym domniemanym katalogiem domowym
źródło