OK, det hele kommer ned til tilladelser, men lad os tage det trin for trin. Når du kører sudo mongod
den indlæser slet ikke en config-fil, den starter bogstaveligt talt med de kompilerede i standarder - port 27017, databasesti til /data/db osv. - det er derfor du fik fejlen om ikke at kunne finde den mappe. "Ubuntu standard" bruges kun, når du peger på konfigurationsfilen (hvis du begynder at bruge servicekommandoen, gøres dette for dig bag kulisserne).
Dernæst kørte du det sådan her:
sudo mongod -f /etc/mongodb.conf
Hvis der ikke var problemer før, så vil der være nu - du har kørt processen, med din normale config (peger på din sædvanlige dbpath og log) som root-bruger. Det betyder, at der nu vil være et antal filer i den normale MongoDB-mappe med bruger:gruppen root:root
.
Dette vil forårsage fejl, når du forsøger at starte den som en normal tjeneste igen, fordi mongodb-brugeren (som tjenesten vil forsøge at køre som) ikke vil have tilladelse til at få adgang til disse root:root
filer, og mest bemærkelsesværdigt vil den sandsynligvis ikke være i stand til at skrive til logfilen for at give dig nogen information.
Derfor, for at køre det som en normal tjeneste, skal vi rette disse tilladelser. Først skal du sørge for, at MongoDB ikke kører som root i øjeblikket, derefter:
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
Det burde ordne det (forudsat at user:group er mongodb:mongodb
), selvom det nok er bedst at verificere med en ls -al
eller lignende for at være sikker. Når dette er gjort, skulle du være i stand til at få tjenesten til at starte igen.