sql >> Database >  >> NoSQL >> MongoDB

mongodb 3.4.3 Toestemming geweigerd wiredtiger_kv_engine.cpp 267 fout met ubuntu 16

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).



  1. Verbind NodeJS met MongoDB Droplet

  2. Hoe Redis draaiend te krijgen op Azure?

  3. Hoe werk ik Array Elements-overeenkomstcriteria in een MongoDB-document bij?

  4. Wat is het maximale aantal parameters dat wordt doorgegeven aan $in query in MongoDB?