550 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!

27voto

loreii Punkte 372

Wenn Sie mongo ohne Argumente ausführen, wird davon ausgegangen, dass Sie auf dem Produktionsrechner arbeiten, so dass die Standardspeicherorte verwendet werden.

für die Verwendung Ihrer eigenen Datenbank (dev oder einfach eine andere) :

./bin/mongod --dbpath ~/data/db

24voto

Gal Bracha Punkte 16362

Installation über brew auf dem Mac mit YOUR_USER_NAME und Mitarbeiter ist die Gruppe

sudo mkdir -p /data/db
sudo chmod +x+r+w /data/db/
sudo touch /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db
sudo chmod +x+r+w /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock

8voto

Russell Punkte 12031

Ihr Befehl hat die Verzeichnisstruktur im aktuellen Ordner erstellt, nicht im Stammverzeichnis Ihres Computers (das ist das, was die fehlende / ist).

Der erste Befehl war richtig, aber da Sie versuchen, einen Ordner in / das ein geschütztes Verzeichnis ist, müssen Sie ihm das Präfix sudo das ist die Abkürzung für "superuser do". Sie werden dann nach Ihrem Passwort gefragt.

Der vollständige Befehl würde also lauten:

$ sudo mkdir -p /data/db

8voto

emrys57 Punkte 6509

Ich habe

brew install mongodb

am 2018-02-01 und das gab mir mongodb Version 3.6.2.

Angeregt durch die Antwort von orluke oben, habe ich einfach versucht

$ brew services restart mongodb

und alles erwachte zum Leben. Mein mongoose.createConnection() Der Anruf hat getan, was ich wollte. Die GUI MongoDB Kompass , die Gemeinschaftsversion, verbinden würde. Ich habe Compass verwendet, um die local.startup_log Sammlung. Darin befand sich ein Dokument, das Protokoll des Starts des MongoDB-Dienstes, und das hatte

cmdLine:Object
    config:"/usr/local/etc/mongod.conf"

und tatsächlich gab es eine solche Datei:

$ more /usr/local/etc/mongod.conf
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

und es gab eine /usr/local/var/mongodb Verzeichnis mit vielen obskuren Dateien. So scheint also die Installation jetzt zu funktionieren.

Ich bin nicht sicher, ob brew services restart stellt den Dienst so ein, dass er bei der Anmeldung ausgeführt wird. Ich habe also

brew services stop mongodb
brew services start mongodb

und hoffte, dass er nach dem Neustart wieder startet. Und in der Tat, das tat es. In der Tat denke ich jetzt, dass das Richtige nach der Erstinstallation zu tun ist

brew services start mongodb

und das sollte den Dienst starten und ihn nach dem Neustart neu starten.

8voto

Tal Delbari Punkte 121

Ich hatte dieses Problem mit einer bestehenden Mongodb-Einrichtung. Ich bin mir immer noch nicht sicher, warum es passiert ist, aber aus irgendeinem Grund konnte der Mongod-Prozess die Datei mongod.config nicht finden. Weil er die Konfigurationsdatei nicht finden konnte, versuchte er, die DB-Dateien in /data/db zu finden, einem Ordner, der nicht existierte. Die Konfigurationsdatei war jedoch immer noch verfügbar, so dass ich sicherstellte, dass der Prozess Berechtigungen für die Konfigurationsdatei hat, und den Mongod-Prozess mit dem --config-Flag wie folgt ausführte:

mongod --config /etc/mongod.conf

In der Konfigurationsdatei selbst hatte ich diese Einstellung:

storage:
  dbPath: /var/lib/mongodb

Und so konnte der Prozess den echten DB-Ordner wiederfinden.

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