Ich habe /data/db
im Stammverzeichnis erstellt und ausgeführt ./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
ls -ld /data/db
undid
so können wir beraten.-ld
Teil :)drwxrwxrwx. 4 mongod mongod 4096 Sep 17 18:18 /data/db
und ich erhalte immer noch den Fehler. Irgendwelche Ideen?Antworten:
Das Problem ist, dass das Verzeichnis, das Sie erstellt haben,
/data/db
dem Root-Benutzer gehört und nur von diesem beschreibbar ist, Sie jedoch mongod als Sie selbst ausführen. Es gibt verschiedene Möglichkeiten, dies zu beheben. Letztendlich müssen Sie dem betreffenden Verzeichnis jedoch die richtigen Berechtigungen erteilen. Wenn dies für die Produktion ist, würde ich Ihnen raten, die Dokumente zu überprüfen und dies sorgfältig zu überdenken - Sie möchten wahrscheinlich besondere Sorgfalt walten lassen.Wenn dies jedoch nur zum Testen dient und Sie dies nur benötigen, um zu arbeiten und damit fortzufahren, können Sie dies versuchen, wodurch das Verzeichnis für alle beschreibbar wird:
oder dies, wodurch das Verzeichnis Ihnen gehört:
quelle
-R
alle darin enthaltenen/data/db
Dateien rekursiv ändern .chmod
einen neuen Fehler generiertinitAndListen : operation not permitted
, aberchown
funktioniert.chmod -R 755 /data/db
Auf einem Mac musste ich Folgendes tun:
weil es auch eine Datei gab, in
/tmp
der Mongo ebenfalls Zugriff brauchtequelle
Wenn Ihr System SELinux verwendet, stellen Sie sicher, dass Sie den richtigen Kontext für das von Ihnen erstellte Verzeichnis verwenden:
und klonen Sie den Kontext mit:
quelle
Ich hatte das gleiche Problem und die folgende Lösung löste dieses Problem. Sie sollten die folgende Lösung ausprobieren.
quelle
Stoppen Sie zuerst alle mongoDB-Dienste , erstellen Sie dann ein Verzeichnis auf
/
, dh root, falls nicht vorhanden, und entfernen Sie auch die Portdatei . Geben Sie diesem Verzeichnis alle Berechtigungen, werden Sie dieser Verzeichnisbesitzer und führen Sie den folgenden Befehl aus:Wenn Sie fertig sind, starten Sie einfach den MongoDB-Dienst. Wenn dies nicht geholfen hat, versuchen Sie, den Port wie folgt zu ändern:
Hinweis: Für mich funktioniert all dieses Zeug und die Hoffnung würde für Sie funktionieren, Mann!
quelle
Korrigieren Sie die Berechtigungen von
/data/db
(oder/var/lib/mongodb
):Starten Sie dann MongoDB neu, z
Falls dies nicht hilft, überprüfen Sie Ihre Fehlermeldung, wenn Sie ein anderes Datenverzeichnis als / var / lib / mongodb verwenden. In diesem Fall ausführen
Quelle
quelle
Wenn Sie Ihre Mongodb-Protokolle überprüfen und einen solchen Fehler erhalten, befolgen Sie einfach die Schritte wie ich. Dies liegt an Berechtigungsproblemen mit Ihrem
/data/db
Verzeichnis. Ich verwende ubuntu16.04 und finde eine Lösung, indem ich zwei einfache Befehle wie folgt ausführe.Schritt 1: Geben Sie dem Verzeichnis / data / db die Berechtigung:
Schritt 2: Versuchen Sie, den Mongod-Dienst wie folgt zu starten:
Schritt 3: Überprüfen Sie den Status des Mongod-Dienstes:
quelle
Schöne Lösungen, aber ich frage mich, warum niemand die Lösung für Windows gibt.
Wenn Sie Windows verwenden, müssen Sie nur das Cmd "Als Administrator ausführen".
quelle
Ich habe mich mit dem gleichen Problem befasst:
Wechseln Sie in das MongoDB-Verzeichnis, das das
bin
Verzeichnis enthält , und führen Sie Folgendes aus:Wenn Sie MongoDB als Root-Benutzer ausführen, werden Sie möglicherweise aufgefordert, das Root-Passwort einzugeben. Wenn Sie die MongoDB immer noch nicht ausführen können, überprüfen Sie die Berechtigungen für das Datenverzeichnis der MongoDB. Eingeben:
oder geben Sie
ls -l /
die Berechtigungen für alle Verzeichnisse und Dateien im Verzeichnis ein, einschließlich der/data
Verzeichnisses ein.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 erreichen, verwenden wir:755
ist eine oktale Notation zum Festlegen der Berechtigungen des/data
Verzeichnisses auf "rwxr-xr-x
", was bedeutet, dass der Root-Benutzer lesen, schreiben und ausführen kann, während die "Gruppe" und "jeder" nur lesen und ausführen können.Hinweis: Wenn Sie dies nicht tun können, geben Sie stattdessen Folgendes ein:
um die Berechtigung als Root-Benutzer festzulegen.
Wenn Sie mit diesem Schritt fertig sind, erfassen Sie die Berechtigungsmodi erneut mit:
was aussehen sollte wie:
Sie müssen sich
d
am Anfang keine Gedanken über das " " machen und beachten, dass die Berechtigungen "rwxr-xr-x
" .Sie können jetzt zum MongoDB-Verzeichnis zurückkehren und Folgendes eingeben:
MongoDB ausführen.
quelle
Wenn Sie die Datenbankverzeichnisse nicht im Stammverzeichnis haben müssen, können Sie sie
data/db
in Ihrem Home-Verzeichnis (mkdir -p ~/data/db
) erstellen .Anschließend können Sie den MongoDB-Server mit der folgenden
--dbpath
Option starten :(Dies setzt voraus, dass Sie es von einem Terminal aus starten. Aus irgendeinem seltsamen Grund wird
mongod
~ nicht als Pfad des Ausgangsverzeichnisses akzeptiert, daher der Trick des Bash-Echo-Ersetzens, den Sie auch schreiben können./home/yourusername/data/db
)In der Tat muss es nicht sein
~/data/db
, es kann überall sein, wo Sie wollen, und auf diese Weise können Sie mehrere Datenbankpfade haben und alles gut organisieren. Möglicherweise nicht die beste Option für die Produktion (je nachdem, was Sie tun möchten), aber für die Entwicklung funktioniert gut.quelle
Sie müssen den Befehl nur als Superuser ausführen:
Geben Sie einfach vom Terminal aus ein: sudo su mongod
quelle
Wenn Sie unter Windows arbeiten und versuchen, MongoDB einzurichten, führen Sie cmd aus, da Admnistrator der Weg nach vorne ist, wie Enrique oben vorgeschlagen hat. Sehen Sie es hier
quelle
Dies funktionierte für mich in Ubuntu LTS 20.04:
quelle