Ik heb problemen met het starten van mongod als een service:hoe is het mogelijk dat het werkt als ik sudo mongod -f /etc/mongod.conf doe, maar wanneer ik het opstart met sudo service mongod start krijg ik een foutmelding in het logboek
De sudo
commando start mongod
met root
machtigingen (ook wel superuser-toegang genoemd). Als u mongod
. uitvoert als een service worden de gebruiker en de groep geconfigureerd in de servicedefinitie (mongodb
voor beide in uw voorbeeld).
Het is niet nodig om de mongod
. uit te voeren proces als de root
gebruiker, en dit wordt sterk afgeraden volgens de algemene beveiligingspraktijk van het principe van de minste bevoegdheden.
Als u een configuratie vanaf de opdrachtregel wilt testen, kunt u sudo
. gebruiken om te draaien met een opgegeven gebruiker in plaats van de standaard (root) gebruiker.
Bijvoorbeeld:
sudo -u mongodb mongod -f /etc/mongod.conf
Over het algemeen is het het beste om een serviceconfiguratie te gebruiken in plaats van mongod
. uit te voeren handmatig. Bij handmatige aanroep moet u er ook aan denken om parameters zoals het configuratiebestandspad op te nemen (aangezien er geen standaard configuratiepad is). Zonder een configuratiebestand, mongod
gebruikt ook standaardopties zoals een dbPath
van /data/db
.
Bewering:28595:13:Toestemming geweigerd src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
De waarschijnlijke oorzaak van uw toestemmingsfouten is dat u mongod
eerder heeft gestart als de root
gebruiker. Sommige mappen en bestanden kunnen nu eigendom zijn van de rootgebruiker, dus de mongodb
gebruiker heeft daar geen toegang toe. Uw specifieke fout heeft betrekking op het openen van bestanden in de gegevensmap (d.w.z. het geconfigureerde storage.dbPath
in mongod.conf
).
Ervan uitgaande dat u de standaardpaden in uw mongod.conf
. niet hebt gewijzigd bestand, moet u de rechten recursief kunnen aanpassen zodat ze overeenkomen met wat de mongod.service
definitie verwacht.
Zorg er eerst voor dat je je mongod
hebt gestopt bijvoorbeeld als het momenteel actief is.
Pas vervolgens de rechten recursief aan de verwachte gebruiker en groep aan:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Nu zou je mongod
moeten kunnen starten als dienst. Als de service niet start, moet er meer informatie zijn in de mongod
log-bestand (ervan uitgaande dat het logbestand kan worden geschreven door de mongodb
servicegebruiker).