Ich habe Probleme beim Starten von Mongod als Dienst:Wie ist es möglich, dass es funktioniert, wenn ich sudo mongod -f /etc/mongod.conf mache, aber wenn ich es mit sudo service mongod start starte, erhalte ich eine Fehlermeldung im Protokoll
Das sudo
Befehl startet mongod
mit root
Berechtigungen (auch bekannt als Superuser-Zugriff). Wenn Sie mongod
ausführen Als Dienst werden der Benutzer und die Gruppe in der Dienstdefinition konfiguriert (mongodb
für beide in Ihrem Beispiel).
mongod
muss nicht ausgeführt werden Prozess als root
Benutzer, und hiervon wird gemäß der gängigen Sicherheitspraxis des Prinzips der geringsten Rechte dringend abgeraten.
Wenn Sie eine Konfiguration über die Befehlszeile testen möchten, können Sie sudo
verwenden um mit einem bestimmten Benutzer anstelle des Standardbenutzers (Root) ausgeführt zu werden.
Zum Beispiel:
sudo -u mongodb mongod -f /etc/mongod.conf
Im Allgemeinen ist es am besten, eine Dienstkonfiguration zu verwenden, anstatt mongod
auszuführen manuell. Beim manuellen Aufruf müssen Sie auch daran denken, Parameter wie den Konfigurationsdateipfad einzuschließen (da es keinen Standardkonfigurationspfad gibt). Ohne Konfigurationsdatei mongod
verwendet auch Standardoptionen wie dbPath
von /data/db
.
Behauptung:28595:13:Zugriff verweigert src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
Die wahrscheinliche Ursache für Ihre Berechtigungsfehler ist, dass Sie zuvor mongod
gestartet haben als root
Benutzer. Einige Verzeichnisse und Dateien können jetzt dem Root-Benutzer gehören, also mongodb
Benutzer können nicht auf diese zugreifen. Ihr spezifischer Fehler bezieht sich auf den Zugriff auf Dateien im Datenverzeichnis (d. h. der konfigurierte storage.dbPath
in mongod.conf
).
Angenommen, Sie haben die Standardpfade in Ihrer mongod.conf
nicht geändert -Datei sollten Sie in der Lage sein, die Berechtigungen rekursiv anzupassen, damit sie mit dem mongod.service
übereinstimmen Definition erwartet.
Stellen Sie zunächst sicher, dass Sie Ihren mongod
gestoppt haben Instanz, wenn es gerade ausgeführt wird.
Passen Sie dann die Berechtigungen rekursiv an den erwarteten Benutzer und die erwartete Gruppe an:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Jetzt sollten Sie mongod
starten können als Dienstleistung. Wenn der Dienst nicht gestartet werden kann, sollten weitere Details im mongod
enthalten sein log-Datei (vorausgesetzt, die Log-Datei ist für mongodb
schreibbar Dienstbenutzer).