OK, wszystko sprowadza się do uprawnień, ale zróbmy to krok po kroku. Po uruchomieniu sudo mongod
w ogóle nie ładuje pliku konfiguracyjnego, dosłownie zaczyna się od skompilowanych wartości domyślnych - port 27017, ścieżka bazy danych /data/db itp. - dlatego pojawił się błąd o niemożności znalezienia tego folderu. "Domyślne Ubuntu" jest używane tylko wtedy, gdy wskażesz je na plik konfiguracyjny (jeśli zaczniesz używać polecenia service, robisz to za kulisami).
Następnie uruchomiłeś to tak:
sudo mongod -f /etc/mongodb.conf
Jeśli wcześniej nie było problemów, to będzie teraz - uruchomiłeś proces ze swoją normalną konfiguracją (wskazując na twoją zwykłą ścieżkę db i log) jako użytkownik root. Oznacza to, że w tym normalnym folderze MongoDB będzie teraz znajdować się pewna liczba plików z user:group z root:root
.
Spowoduje to błędy, gdy spróbujesz ponownie uruchomić ją jako normalną usługę, ponieważ użytkownik mongodb (który będzie próbował uruchomić jako usługę) nie będzie miał uprawnień dostępu do tych root:root
pliki, a co najważniejsze, prawdopodobnie nie będzie w stanie zapisywać w pliku dziennika żadnych informacji.
Dlatego, aby uruchomić go jako normalną usługę, musimy poprawić te uprawnienia. Najpierw upewnij się, że MongoDB nie działa jako root, a następnie:
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
To powinno to naprawić (zakładając, że user:group to mongodb:mongodb
), chociaż prawdopodobnie najlepiej jest zweryfikować za pomocą ls -al
lub podobne dla pewności. Po wykonaniu tej czynności powinieneś być w stanie ponownie uruchomić usługę.