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

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

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 nur in einem anderen Verzeichnis erstellt haben, z. B. dem Home-Verzeichnis „/root“.

Sie müssen dieses Verzeichnis als root erstellen

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

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

Hinweis:

MongoDB hat auch eine Option, wo 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 etwas komplizierter macht, weil Sie den db-Pfad immer manuell angeben müssen. Ich würde das nicht empfehlen.

Bearbeiten:

Die Fehlermeldung, die Sie erhalten, lautet "Unable to create/open lock file:/data/db/mongod.lock errno:13 Permission denied" . Das von Ihnen erstellte Verzeichnis scheint nicht die richtigen Berechtigungen und Eigentumsrechte zu haben – es muss von dem Benutzer beschreibbar sein, der den MongoDB-Prozess ausführt.

Um die Berechtigungen und den Besitz des Verzeichnisses „/data/db/“ anzuzeigen, tun Sie dies:(so sollten die Berechtigungen und der Besitz aussehen)

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

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

Wenn Ihr '/data/db'-Verzeichnis nicht die oben genannten Berechtigungen und Eigentumsrechte hat, tun Sie dies :

Überprüfen Sie zuerst, 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 es sich um einen Daemon handelt.

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 wie folgt verwenden:(Sie finden sie in /etc/passwd und /etc/group )

sudo chown -R mongod:mongod /data/db 

damit sollte es funktionieren..

In den Kommentaren unten haben einige Leute Folgendes verwendet:

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

oder

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.

Überprüfen Sie hier, um die Bedeutung der Verzeichnisberechtigungen besser zu verstehen:

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

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