544 Stimmen

Mongod beschwert sich, dass es keinen Ordner /data/db gibt

Ich benutze meinen neuen Mac heute zum ersten Mal. Ich folge der Anleitung auf mongodb.org bis zu dem Schritt, bei dem man das Verzeichnis /data/db erstellt. Übrigens habe ich die Homebrew-Route verwendet.

Ich öffne also ein Terminal, und ich glaube, ich befinde mich in dem Verzeichnis, das Sie "Home Directory" genannt haben, denn wenn ich "ls" ausführe, sehe ich die Ordner Desktop Application Movies Music Pictures Documents und Library.

Also habe ich eine

mkdir -p /data/db

Zuerst heißt es, dass die Genehmigung verweigert wurde. Ich habe eine halbe Stunde lang verschiedene Dinge versucht und schließlich :

mkdir -p data/db

funktionierte. und wenn ich "ls", ein Verzeichnis von Daten und verschachtelt in ihm ein db Ordner existieren.

dann starte ich mongod und er beschwert sich, dass er keine Daten/Datenbank findet

Habe ich etwas falsch gemacht?

Jetzt habe ich die

sudo mkdir -p /data/db

und wenn ich ein "ls" ausführe, sehe ich das data-Verzeichnis und das db-Verzeichnis. Im db-Verzeichnis ist jedoch absolut nichts enthalten, und wenn ich jetzt mongod ausführe

Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit: 
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now

EDIT Ich erhalte eine Fehlermeldung für

sudo chown mongod:mongod /data/db

chown: mongod: Invalid argument

Vielen Dank an alle!

680voto

Tilo Punkte 32417

Sie haben das Verzeichnis an der falschen Stelle erstellt

/data/db bedeutet, dass es sich direkt unter dem Root-Verzeichnis "/" befindet, während Sie "data/db" (ohne das führende /) wahrscheinlich innerhalb eines anderen Verzeichnisses, z. B. des Home-Verzeichnisses "/Root", angelegt haben.

Sie müssen dieses Verzeichnis als Root erstellen

Entweder müssen Sie sudo z.B. sudo mkdir -p /data/db

Oder Sie müssen Folgendes tun su - um Superuser zu werden, und erstellen Sie dann das Verzeichnis mit mkdir -p /data/db


Anmerkung:

MongoDB hat auch eine Option, mit der Sie das Datenverzeichnis an einem anderen Ort erstellen können, aber das ist im Allgemeinen keine gute Idee, weil es Dinge wie die DB-Wiederherstellung nur geringfügig verkompliziert, weil Sie den DB-Pfad immer manuell angeben müssen. Ich würde nicht empfehlen, das zu tun.


Bearbeiten:

Die Fehlermeldung, die Sie erhalten, lautet "Sperrdatei kann nicht erstellt/geöffnet werden: /data/db/mongod.lock errno:13 Erlaubnis verweigert" . Das Verzeichnis, das Sie erstellt haben, scheint nicht die richtigen Berechtigungen und Eigentümer zu haben - Es muss von dem Benutzer, der den MongoDB-Prozess ausführt, beschreibbar sein.

Um die Berechtigungen und Eigentümer des Verzeichnisses "/data/db/" zu sehen, gehen Sie wie folgt vor: (so sollten die Berechtigungen und Besitzverhältnisse aussehen)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

Auf der linken Seite zeigt "drwxr-xr-x" die Berechtigungen für den Benutzer, die Gruppe und andere an. mongod mongod' zeigt an, wem das Verzeichnis gehört und zu welcher Gruppe das Verzeichnis gehört. Beide werden in diesem Fall "mongod" genannt.

Wenn Ihr '/data/db'-Verzeichnis nicht die oben genannten Berechtigungen und Besitzverhältnisse hat, gehen Sie wie folgt vor :

Prüfen Sie zunächst, welchen Benutzer und welche Gruppe Ihr Mongo-Benutzer hat:

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

Sie sollten einen Eintrag für mongod in /etc/passwd haben, da er ein Daemon ist.

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

Sie können auch den Benutzernamen und den Gruppennamen verwenden, wie folgt: (sie sind in /etc/passwd und /etc/group zu finden)

sudo chown -R mongod:mongod /data/db 

damit sollte es funktionieren

In den Kommentaren unten haben einige Leute dies verwendet:

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

o

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

Der Nachteil ist, dass $USER ein Konto ist, das eine Login-Shell hat. Daemons sollten aus Sicherheitsgründen idealerweise keine Shell haben, deshalb sehen Sie /bin/false im grep der Passwortdatei oben.

Sehen Sie hier nach, um die Bedeutung der Verzeichnisberechtigungen besser zu verstehen:

http://www.perlfect.com/articles/chmod.shtml

Vielleicht schauen Sie sich auch eines der Tutorials an, die Sie über Google finden können: "UNIX für Anfänger"

118voto

jagough Punkte 1181

Nachdem ich den gleichen Fehler wie Nik erhalten habe

chown: id -u: Ungültiges Argument

Ich habe herausgefunden, dass dies offenbar auf die Verwendung der falschen Art von Anführungszeichen zurückzuführen ist (es sollten Backquotes ) Ubuntu-Foren

Stattdessen habe ich einfach

sudo chown $USER /data/db

als Alternative, und jetzt hat mongod die erforderlichen Berechtigungen.

93voto

Iman Mohamadi Punkte 5918

Dies funktioniert bei mir, gefunden in den Kommentaren:

sudo chown -R $USER /data/db

79voto

Connor Leech Punkte 16726

Erstellen Sie den Ordner.

sudo mkdir -p /data/db/

Geben Sie sich selbst die Erlaubnis für den Ordner.

sudo chown `id -u` /data/db

Dann können Sie mongod ohne sudo . Funktioniert unter OSX Yosemite

41voto

orluke Punkte 2004

Um den Fehler unter OS X zu beheben, habe ich den Dienst neu gestartet und beendet: $ brew services restart mongodb $ brew services stop mongodb

Dann lief ich mongod --config /usr/local/etc/mongod.conf und das Problem war behoben.

Der Fehler schien nach der Aktualisierung des mongodb Homebrew-Pakets aufzutreten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X