Jeg har problemer med at starte mongod som en tjeneste:Hvordan er det muligt, at det virker, når jeg gør sudo mongod -f /etc/mongod.conf, men når jeg starter den med sudo-tjenesten mongod start, får jeg en fejl i loggen
sudo
kommandoen starter mongod
med root
tilladelser (alias superbrugeradgang). Hvis du kører mongod
som en tjeneste er brugeren og gruppen konfigureret i tjenestedefinitionen (mongodb
for begge i dit eksempel).
Der er ingen grund til at køre mongod
proces som root
bruger, og dette frarådes kraftigt i henhold til den almindelige sikkerhedspraksis i princippet om mindste privilegium.
Hvis du vil teste en konfiguration fra kommandolinjen, kan du bruge sudo
at køre med en specificeret bruger i stedet for standardbrugeren (rodbrugeren).
For eksempel:
sudo -u mongodb mongod -f /etc/mongod.conf
Generelt er det bedst at bruge en tjenestekonfiguration i stedet for at køre mongod
manuelt. Med manuel aktivering skal du også huske at inkludere parametre som konfigurationsfilstien (da der ikke er nogen standard konfigurationssti). Uden en konfigurationsfil, mongod
bruger også standardindstillinger såsom en dbPath
af /data/db
.
Påstand:28595:13:Tilladelse nægtet src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
Den sandsynlige årsag til dine tilladelsesfejl er at have startet mongod
tidligere som root
bruger. Nogle mapper og filer kan nu ejes af root-brugeren, så mongodb
brugeren kan ikke få adgang til dem. Din specifikke fejl vedrører adgang til filer i databiblioteket (dvs. den konfigurerede storage.dbPath
i mongod.conf
).
Forudsat at du ikke har ændret standardstierne i din mongod.conf
fil, bør du være i stand til rekursivt at justere tilladelser, så de passer til mongod.service
definition forventer.
Først skal du sikre dig, at du har stoppet din mongod
hvis den kører i øjeblikket.
Juster derefter rekursivt tilladelser til den forventede bruger og gruppe:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Nu skulle du være i stand til at starte mongod
som en service. Hvis tjenesten ikke starter, bør der være flere detaljer i mongod
logfil (forudsat at logfilen kan skrives af mongodb
tjenestebruger).