Utworzyłem /data/db
w katalogu głównym i uruchomiłem ./mongod
:
[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100
ls -ld /data/db
aid
my możemy doradzić.-ld
udział :)drwxrwxrwx. 4 mongod mongod 4096 Sep 17 18:18 /data/db
i nadal otrzymuję błąd. Jakieś pomysły?Odpowiedzi:
Problem polega na tym, że katalog, który utworzyłeś,
/data/db
należy do i tylko użytkownik root, ale używasz mongod jako siebie. Istnieje kilka sposobów rozwiązania tego problemu, ale ostatecznie musisz nadać danemu katalogowi odpowiednie uprawnienia. Jeśli to jest do produkcji, radziłbym sprawdzić dokumentację i dokładnie to przemyśleć - prawdopodobnie chcesz zachować szczególną ostrożność.Jeśli jednak to jest tylko do testowania i potrzebujesz tego do pracy i kontynuowania, możesz spróbować tego, co sprawi, że każdy będzie mógł zapisywać w katalogu:
lub to, co spowoduje, że katalog stanie się Twoją własnością:
źródło
-R
zmiany wszystkich/data/db
plików w środku.chmod
wygenerował nowy błądinitAndListen : operation not permitted
, alechown
zadziałał.chmod -R 755 /data/db
Na komputerze Mac musiałem wykonać następujące czynności:
ponieważ był tam również plik, do
/tmp
którego Mongo również potrzebował dostępuźródło
Jeśli twój system używa SELinux, upewnij się, że używasz odpowiedniego kontekstu dla utworzonego katalogu:
i sklonuj kontekst za pomocą:
źródło
Doświadczyłem tego samego problemu i poniższe rozwiązanie rozwiązało ten problem. Powinieneś wypróbować następujące rozwiązanie.
źródło
Przede wszystkim zatrzymaj wszystkie usługi mongoDB , następnie utwórz katalog na
/
, czyli root, jeśli go nie masz, i usuń również plik portu. nadaj wszelkie uprawnienia do tego katalogu, zostań właścicielem tego katalogu, uruchom poniższe polecenie:Teraz gotowe, po prostu uruchom usługę MongoDB, jeśli nie pomogło, spróbuj zmienić port na przykład:
Uwaga: dla mnie to wszystko działa i mam nadzieję, że zadziała dla ciebie, stary!
źródło
Napraw uprawnienia
/data/db
(lub/var/lib/mongodb
):następnie zrestartuj MongoDB, np. używając
Jeśli to nie pomoże, sprawdź komunikat o błędzie, jeśli używasz katalogu danych innego niż / var / lib / mongodb. W takim razie uruchom
źródło
źródło
Ładne rozwiązania, ale zastanawiam się, dlaczego nikt nie podaje rozwiązania dla okien.
Jeśli używasz systemu Windows, wystarczy „Uruchomić jako administrator” cmd.
źródło
Jeśli sprawdzasz logi mongodb i otrzymujesz taki błąd, po prostu wykonaj kroki tak jak ja. Występuje z powodu problemów z uprawnieniami w
/data/db
katalogu. Używam ubuntu16.04 i znajduję rozwiązanie z uruchomieniem dwóch prostych poleceń w następujący sposób.Krok 1: Przyznaj uprawnienia do katalogu / data / db:
Krok 2: Spróbuj uruchomić usługę mongod jako:
Krok 3: Sprawdź stan usługi mongod:
źródło
Jeśli nie potrzebujesz katalogów bazy danych w katalogu głównym, możesz utworzyć je
data/db
w swoim katalogu domowym (mkdir -p ~/data/db
).Następnie możesz uruchomić serwer MongoDB z
--dbpath
opcją:(Zakładamy, że uruchamiasz go z terminala. Z jakiegoś dziwnego powodu
mongod
nie akceptuje ~ jako ścieżki katalogu domowego, stąd sztuczka podstawiania echa bash, równie dobrze możesz napisać/home/yourusername/data/db
)W rzeczywistości nie musi być
~/data/db
, może być w dowolnym miejscu, dzięki czemu możesz mieć wiele ścieżek do bazy danych i ładnie wszystko organizować. Może nie być najlepszą opcją do produkcji (w zależności od tego, co chcesz zrobić), ale programowanie działa dobrze.źródło
Zajmowałem się tym samym problemem:
Przejdź do katalogu MongoDB, który zawiera
bin
katalog, i uruchom:Uruchamiając MongoDB jako użytkownik root, możesz zostać poproszony o wprowadzenie hasła roota. Jeśli nadal nie możesz uruchomić MongoDB, sprawdź uprawnienia do katalogu danych MongoDB. Wchodzić:
lub wpisz
ls -l /
uprawnienia do wszystkich katalogów i plików w katalogu, w tym/data
katalogu.Tryb uprawnień dla użytkownika root powinien być ustawiony na "
rwx
", co oznacza, że użytkownik root może czytać, zapisywać i wykonywać pliki. Aby to się stało, używamy:755
jest zapisem ósemkowym do ustawiania uprawnień do/data
katalogu na "rwxr-xr-x
”, co oznacza, że użytkownik root może czytać, pisać i wykonywać, podczas gdy „grupa” i „wszyscy” mogą tylko czytać i wykonywać.Uwaga: jeśli nie możesz tego zrobić, wpisz zamiast tego:
ustawić uprawnienia jako użytkownik root.
Następnie, po wykonaniu tego kroku, ponownie przechwyć tryby uprawnień, używając:
który powinien wyglądać następująco:
Nie musisz martwić się o „
d
” na początku i zauważ, że uprawnienia odzwierciedlają „rwxr-xr-x
”.Możesz teraz wrócić do katalogu MongoDB i wpisać:
uruchomić MongoDB.
źródło
wystarczy uruchomić polecenie jako superużytkownik:
po prostu wpisz z terminala: sudo su mongod
źródło
Jeśli pracujesz w systemie Windows i próbujesz skonfigurować MongoDB, uruchom cmd, ponieważ Admnistrator jest rozwiązaniem, jak zasugerował Enrique powyżej, zobacz to tutaj
źródło
To zadziałało dla mnie w Ubuntu LTS 20.04:
źródło