Mam problemy z uruchomieniem mongod jako usługi:Jak to możliwe, że działa, gdy wykonuję sudo mongod -f /etc/mongod.conf, ale po uruchomieniu z sudo service mongod start pojawia się błąd w dzienniku
sudo
polecenie uruchamia mongod
z root
uprawnienia (czyli dostęp superużytkownika). Jeśli uruchomisz mongod
jako usługa użytkownik i grupa są konfigurowane w definicji usługi (mongodb
dla obu w twoim przykładzie).
Nie ma potrzeby uruchamiania mongod
przetwarzać jako root
użytkownika, co jest zdecydowanie odradzane zgodnie z powszechną praktyką bezpieczeństwa dotyczącą zasady najmniejszych uprawnień.
Jeśli chcesz przetestować konfigurację z wiersza poleceń, możesz użyć sudo
do uruchomienia z określonym użytkownikiem zamiast z domyślnym (root).
Na przykład:
sudo -u mongodb mongod -f /etc/mongod.conf
Ogólnie rzecz biorąc, najlepiej jest użyć konfiguracji usługi, a nie uruchamiać mongod
ręcznie. Przy ręcznym wywołaniu będziesz musiał również pamiętać o uwzględnieniu parametrów, takich jak ścieżka pliku konfiguracyjnego (ponieważ nie ma domyślnej ścieżki konfiguracyjnej). Bez pliku konfiguracyjnego mongod
używa również domyślnych opcji, takich jak dbPath
z /data/db
.
Asercja:28595:13:Odmowa pozwolenia src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
Prawdopodobną przyczyną błędów uprawnień jest wcześniejsze uruchomienie mongod
jako root
użytkownik. Niektóre katalogi i pliki mogą być teraz własnością użytkownika root, więc mongodb
użytkownik nie ma do nich dostępu. Twój konkretny błąd dotyczy dostępu do plików w katalogu danych (tj. skonfigurowanej storage.dbPath
w mongod.conf
).
Zakładając, że nie zmieniłeś domyślnych ścieżek w pliku mongod.conf
plik, powinieneś być w stanie rekurencyjnie dostosować uprawnienia, aby pasowały do tego, co mongod.service
definicja oczekuje.
Najpierw upewnij się, że zatrzymałeś swojego mongod
przykład, jeśli jest aktualnie uruchomiony.
Następnie rekurencyjnie dostosuj uprawnienia do oczekiwanego użytkownika i grupy:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Teraz powinieneś być w stanie uruchomić mongod
jako usługa. Jeśli usługa się nie uruchomi, dalsze szczegóły powinny znaleźć się w mongod
plik dziennika (zakładając, że plik dziennika jest zapisywalny przez mongodb
użytkownik usługi).