MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb 3.4.3 Berechtigung verweigert Wiredtiger_kv_engine.cpp 267 Fehler mit Ubuntu 16

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