Frage MongoDB: Ausnahme in initAndListen: 20 Versuch, eine Sperrdatei in einem schreibgeschützten Verzeichnis zu erstellen: / data / db, beendet


ich erschuf /data/db im Stammverzeichnis und lief ./mongod:

[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100

74
2018-02-24 19:36


Ursprung


Antworten:


Das Problem ist, dass das von Ihnen erstellte Verzeichnis /data/db gehört dem root-Benutzer und ist nur schreibbar, aber Sie führen mongod als Sie selbst aus. Es gibt mehrere Möglichkeiten, dies zu beheben, aber letztendlich müssen Sie dem betreffenden Verzeichnis die richtigen Berechtigungen erteilen. Wenn dies für die Produktion ist, würde ich Ihnen raten, die Dokumente zu überprüfen und sorgfältig darüber nachzudenken - Sie möchten wahrscheinlich besonders vorsichtig sein.

Wenn dies jedoch nur zum Testen gedacht ist und Sie es nur zum Arbeiten und Weiterarbeiten benötigen, können Sie dies versuchen, wodurch das Verzeichnis für alle schreibbar wird:

> sudo chmod -R go+w /data/db

oder das, was das Verzeichnis zu dir macht:

> sudo chown -R $USER /data/db

168
2018-02-24 20:01



Du kannst mongo als root benutzen, was für mich funktioniert:

$ sudo mongod

35
2018-03-08 17:50



Auf einem Mac musste ich Folgendes tun:

sudo chown -R $USER /data/db
sudo chown -R $USER /tmp/

weil da auch eine Datei drin war /tmp zu dem auch Mongo Zugang brauchte


29
2017-12-06 13:11



Ich hatte das gleiche Problem und folgende Lösung löste dieses Problem. Sie sollten die folgende Lösung versuchen.

sudo mkdir -p / daten / db
   sudo chown -R 'Benutzername' / Daten / db


14
2018-04-11 13:49



Wenn Ihr System SELinux verwendet, stellen Sie sicher, dass Sie den richtigen Kontext für das von Ihnen erstellte Verzeichnis verwenden:

ls -dZ /data/db/
ls -dZ /var/lib/mongo/

und klonen Sie den Kontext mit:

chcon -R --reference=/var/lib/mongo /data/db

13
2018-03-07 12:54



Nette Lösungen, aber ich frage mich, warum niemand die Lösung für Windows gibt.

Wenn Sie Windows verwenden, müssen Sie lediglich den Befehl "Als Administrator ausführen" ausführen.


4
2017-12-16 21:25



Ich habe mit genau dem gleichen Problem konfrontiert und ich habe es gelöst und hier sind die Erklärungen Schritt für Schritt:

Bevor Sie alles andere ausprobieren, wechseln Sie einfach in das Verzeichnis mongodb, das das Verzeichnis bin für mongodb enthält, und verwenden Sie einfach den Befehl im Terminal:

sudo bin / mongod 

Wenn Sie mongodb als root-Benutzer ausführen, werden Sie möglicherweise aufgefordert, das Kennwort als root-Benutzer einzugeben. Wenn du das mongodb immer noch nicht ausführen kannst, dann lass uns folgendes tun:

Sehen wir uns zunächst den Berechtigungsmodus des Datenverzeichnisses von mongodb an, indem Sie im Terminal eingeben:

ls -ld / Daten

(p.s. oder wir können einfach "ls -l /" eingeben, um die Berechtigungsmodi aller Verzeichnisse und Dateien im Stammverzeichnis anzuzeigen, einschließlich des Verzeichnisses / data.)

Und der Berechtigungsmodus für den root-Benutzer sollte "rwx" sein, dh der root-Benutzer kann die Dateien lesen, schreiben und ausführen. Um dies zu ermöglichen, verwenden wir den Befehl, um den Berechtigungsmodus zu ändern, indem Sie Terminal eingeben:

chmod 755 / Daten 

(d. h. 755 ist eine spezielle Oktalnotation des Berechtigungseinstellungsarguments) Damit werden die Berechtigungsmodi des Verzeichnisses / data auf "rwxr-xr-x" gesetzt, dh der Root-Benutzer kann lesen, schreiben und ausführen, während der Gruppenbenutzer und alle anderen nur lesen und ausführen können.

Hinweis: Wenn Sie diese Operation nicht ausführen können, geben Sie stattdessen Folgendes ein:

Sudo chmod 755 / Daten 

um die Berechtigung als Root-Benutzer festzulegen.

Dann, wenn dieser Schritt abgeschlossen ist, können wir die Berechtigungsmodi durch Eingabe wieder aufnehmen nochmal: ls -ld / Daten

und die Ausgabe sollte so aussehen:

drwxr-xr-x 3 Wurzelrad 102 3. März 17:00 / Daten

(Sie müssen sich nicht um das "d" am Anfang kümmern) und beachten Sie, dass die Einstellung "rwxr-xr-x" jetzt fertig ist.

Dann sind wir fertig und können nun wieder in das mongodb-Verzeichnis wechseln und folgendes eingeben:

sudo bin / mongod 

um den Mongodb zu führen.

Hoffe das hilft.


2
2018-03-11 00:22