OK, allt detta handlar om behörigheter, men låt oss ta det steg för steg. När du kör sudo mongod
den laddar inte en konfigurationsfil alls, den börjar bokstavligen med de kompilerade i standardvärden - port 27017, databassökväg till /data/db etc. - det är därför du fick felet om att du inte kunde hitta den mappen. "Ubuntu default" används bara när du pekar på inställningsfilen (om du börjar använda servicekommandot görs detta för dig bakom kulisserna).
Därefter körde du det så här:
sudo mongod -f /etc/mongodb.conf
Om det inte var problem innan, så kommer det att finnas nu - du har kört processen, med din normala konfiguration (pekar på din vanliga dbpath och logg) som root-användare. Det betyder att det nu kommer att finnas ett antal filer i den normala MongoDB-mappen med user:group av root:root
.
Detta kommer att orsaka fel när du försöker starta den som en normal tjänst igen, eftersom mongodb-användaren (som tjänsten kommer att försöka köra som) inte kommer att ha behörighet att komma åt dessa root:root
filer, och framför allt kommer den förmodligen inte att kunna skriva till loggfilen för att ge dig någon information.
Därför, för att köra den som en normal tjänst, måste vi fixa dessa behörigheter. Se först till att MongoDB för närvarande inte körs som root, sedan:
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
Det borde fixa det (förutsatt att user:group är mongodb:mongodb
), även om det förmodligen är bäst att verifiera med en ls -al
eller liknande för att vara säker. När detta är gjort bör du kunna få tjänsten att starta på nytt.