Ich benutze heute zum ersten Mal meinen neuen Mac. Ich folge der Kurzanleitung auf mongodb.org bis zu dem Schritt, in dem das Verzeichnis / data / db erstellt wird. Übrigens habe ich die Homebrew-Route benutzt.
Also öffne ich ein Terminal und denke, ich bin in dem, was Sie als Home-Verzeichnis bezeichnet haben, denn wenn ich "ls" mache, sehe ich Ordner mit Desktop-Anwendungsfilmen, Musikbildern, Dokumenten und Bibliotheken.
Also habe ich eine gemacht
mkdir -p /data/db
Erstens heißt es, dass die Erlaubnis verweigert wurde. Ich habe eine halbe Stunde lang verschiedene Dinge ausprobiert und schließlich:
mkdir -p data/db
hat funktioniert. und wenn ich "ls", ein Verzeichnis von Daten und darin ein Datenbankordner verschachtelt existieren.
dann starte ich mongod und es beschwert sich darüber, keine daten / db zu finden
Habe ich etwas falsch gemacht?
Jetzt habe ich das getan
sudo mkdir -p /data/db
und wenn ich ein "ls" mache, sehe ich das Datenverzeichnis und das Datenbankverzeichnis. im db dir ist aber absolut nichts drin und wenn ich jetzt mongod laufe
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
BEARBEITEN Fehlermeldung für abrufen
sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument
Vielen Dank an alle!
grep mongo /etc/passwd /etc/group
. Wenn dies nicht funktioniert, überprüfen Sie den Namen, indem Sie den Eigentümer des Verzeichnisses überprüfenls -ld /var/lib/mongo
. Oder um zu sehen, wie die UID / GID dies tut :ls -lnd /var/lib/mongo
. In meinem Falldrwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...
- dies bedeutet, verwenden Sie 487: 480 als ParameterAntworten:
Sie haben das Verzeichnis am falschen Ort erstellt
/ data / db bedeutet, dass es sich direkt unter dem Stammverzeichnis '/' befindet, während Sie 'data / db' (ohne das führende /) wahrscheinlich nur in einem anderen Verzeichnis erstellt haben, z. B. im Homedirectory '/ root'.
Sie müssen dieses Verzeichnis als root erstellen
Entweder müssen Sie verwenden
sudo
, zsudo mkdir -p /data/db
Oder Sie müssen
su -
Superuser werden und dann das Verzeichnis mit erstellenmkdir -p /data/db
Hinweis:
MongoDB bietet auch eine Option, mit der Sie das Datenverzeichnis an einem anderen Speicherort erstellen können. Dies ist jedoch im Allgemeinen keine gute Idee, da dies beispielsweise die DB-Wiederherstellung nur geringfügig erschwert, da Sie den Datenbankpfad immer manuell angeben müssen. Das würde ich nicht empfehlen.
Bearbeiten:
Die Fehlermeldung lautet "Sperrdatei kann nicht erstellt / geöffnet werden: /data/db/mongod.lock errno: 13 Berechtigung verweigert" . Das von Ihnen erstellte Verzeichnis scheint nicht über die richtigen Berechtigungen und Eigentumsrechte zu verfügen. Es muss von dem Benutzer beschreibbar sein, der den MongoDB-Prozess ausführt.
Gehen Sie folgendermaßen vor, um die Berechtigungen und den Besitz des Verzeichnisses '/ data / db /' anzuzeigen: (So sollten die Berechtigungen und der Besitz aussehen)
Die linke Seite 'drwxr-xr-x' zeigt die Berechtigungen für den Benutzer, die Gruppe und andere. 'mongod mongod' zeigt an, wem das Verzeichnis gehört und zu welcher Gruppe dieses Verzeichnis gehört. Beide werden in diesem Fall "Mongod" genannt.
Wenn Ihr Verzeichnis '/ data / db' nicht über die oben genannten Berechtigungen und Eigentumsrechte verfügt, gehen Sie folgendermaßen vor :
Überprüfen Sie zunächst, welchen Benutzer und welche Gruppe Ihr Mongo-Benutzer hat:
Sie sollten einen Eintrag für mongod in / etc / passwd haben, da es sich um einen Daemon handelt.
Sie können den Benutzernamen und den Gruppennamen auch wie folgt verwenden: (Sie finden sie in / etc / passwd und / etc / group)
das sollte es funktionieren lassen ..
In den Kommentaren unten haben einige Leute dies verwendet:
oder
Der Nachteil ist, dass $ USER ein Konto mit einer Login-Shell ist. Daemons sollten aus Sicherheitsgründen idealerweise keine Shell haben. Deshalb sehen Sie / bin / false im Grep der obigen Passwortdatei.
Überprüfen Sie hier, um die Bedeutung der Verzeichnisberechtigungen besser zu verstehen:
http://www.perlfect.com/articles/chmod.shtml
Vielleicht sehen Sie sich auch eines der Tutorials an, die Sie über Google finden: "UNIX für Anfänger"
quelle
ls -ld /data/
undls -ld /data/db/
.. Sie sehen die Verzeichnisberechtigungen auf der linken Seite, dann den Besitz, dann den Verzeichnisnamen. Sie sollten sicherstellen, dass die Verzeichnisse mit der Benutzer-ID beschreibbar sind, auf der MongoDB ausgeführt wird.invalid arguement
sudo touch /data/db/mongod.lock
undsudo chmod 0777 /data/db/mongd.lock
. Sie fing gleich an.sudo chown -R `id -u` /data/db
odersudo chown -R $USER /data/db
stattdessensudo chown mongod:mongod /data/db
den Trick für mich gemachtNach dem gleichen Fehler wie Nik
Ich fand heraus, dass dies anscheinend durch die Verwendung der falschen Art von Anführungszeichen (sollte Rückzitate gewesen sein ) in Ubuntu-Foren geschehen sein sollte
Stattdessen habe ich nur verwendet
Als Alternative und jetzt hat Mongod die Berechtigungen, die es benötigt.
quelle
Das funktioniert bei mir, gefunden in Kommentaren:
quelle
Erstellen Sie den Ordner.
Geben Sie sich die Erlaubnis für den Ordner.
Dann kannst du
mongod
ohne laufensudo
. Funktioniert unter OSX Yosemitequelle
bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
Um diesen Fehler unter OS X zu beheben, habe ich den Dienst neu gestartet und gestoppt:
$ brew services restart mongodb $ brew services stop mongodb
Dann rannte ich
mongod --config /usr/local/etc/mongod.conf
und das Problem war weg.Der Fehler schien nach dem Upgrade des Mongodb Homebrew-Pakets aufzutreten.
quelle
Installation über Brew auf einem Mac, bei dem YOUR_USER_NAME und Mitarbeiter die Gruppe sind
quelle
/etc/passwd
den Benutzernamen an - die Gruppe ist wahrscheinlich identisch. Es ist normalerweise entwedermongo
odermongodb
.Wenn Sie mongo ohne Argumente ausführen, wird davon ausgegangen, dass Sie auf dem Produktionscomputer ausgeführt werden, sodass die Standardspeicherorte verwendet werden.
für die Verwendung Ihrer eigenen Datenbank (dev oder nur eine andere):
quelle
Ich hatte dieses Problem mit einem vorhandenen Mongodb-Setup. 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. Da die Konfigurationsdatei nicht gefunden werden konnte, wurde versucht, die DB-Dateien in / data / db zu finden, einem Ordner, der nicht vorhanden war. Die Konfigurationsdatei war jedoch noch verfügbar, daher habe ich sichergestellt, dass der Prozess über Berechtigungen für die Konfigurationsdatei verfügt, und den Mongod-Prozess mit dem Flag --config wie folgt ausgeführt:
In der Konfigurationsdatei selbst hatte ich folgende Einstellung:
Und so könnte der Prozess den echten DB-Ordner wiederfinden.
quelle
Ich tat
am 2018-02-01 und das gab mir
mongodb
Version 3.6.2.Auf die Antwort von Orluke oben hin habe ich es einfach versucht
und alles erwachte zum Leben. Mein
mongoose.createConnection()
Anruf hat getan, was ich wollte. Der GUI MongoDB Compass , die Community-Version, würde eine Verbindung herstellen. Ich habe Compass verwendet, um mir dielocal.startup_log
Sammlung anzusehen . Das hatte ein Dokument, das Protokoll von mir, als ich gerade den mongoDB-Dienst startete, und das hatteund tatsächlich gab es eine solche Akte:
und es gab ein
/usr/local/var/mongodb
Verzeichnis mit vielen obskuren Dateien. So scheint die Installation jetzt zu funktionieren.Ich bin nicht sicher, ob
brew services restart
der Dienst bei der Anmeldung ausgeführt wird. So tat ichund hoffte, dass es nach dem Neustart wieder startet. Und tatsächlich tat es das auch. Tatsächlich denke ich, dass das Richtige nach der Erstinstallation ist
und das sollte den Dienst starten und nach dem Neustart neu starten.
quelle
Ihr Befehl hat die Verzeichnisstruktur im aktuellen Ordner erstellt, nicht im Stammverzeichnis Ihres Computers (was fehlt
/
).Der erste Befehl war richtig, aber da Sie versuchen, einen Ordner in
/
einem geschützten Verzeichnis zu erstellen , müssen Sie ihm ein Präfix voranstellensudo
, was für "superuser do" steht. Sie werden dann nach Ihrem Passwort gefragt.Der vollständige Befehl wäre also:
quelle
Sie müssen / data / db ... erstellen . Dies ist ein Verzeichnis mit dem Namen / data / in Ihrem Stammverzeichnis (dh / ) und ein Unterordner mit dem Namen / db / ...
Sie erhalten Berechtigungsfehler, da Sie mit sudo unter MacOS ein Verzeichnis in Ihrem Stammverzeichnis erstellen müssen. Mit sudo können Sie Befehle als Administrator ausführen.
Führen Sie dies stattdessen aus ...
Dadurch werden Sie zur Eingabe eines Kennworts aufgefordert. Es ist dasselbe Kennwort, das Sie zum Ändern der Systemeinstellungen verwenden (das kleine Dialogfeld, das geöffnet wird, wenn Sie versuchen, Änderungen in den Systemeinstellungen vorzunehmen, zum Beispiel), und wahrscheinlich dasselbe, das Sie zum Anmelden verwenden.
quelle
Sie versuchen, ein Verzeichnis zu erstellen, auf das Sie keinen Root-Zugriff haben.
Zum Testen von Mongodb verwende ich einfach ein Verzeichnis aus meinem Benutzerverzeichnis wie:
Dadurch wird eine Mongo-Datenbank in temp / aus Ihrem aktuellen Arbeitsverzeichnis erstellt
quelle
Ich habe genau dieses Problem gelöst, indem ich die Ordner / data / db mit meinem Fenstermanager erstellt habe. Ich habe es zuerst über das Terminal versucht, und um einen Ordner im Stammverzeichnis zu erstellen, musste ich sudo verwenden.
Ich bin gerade mit Finder in das Stammverzeichnis gegangen und habe mit 'New Folder' einen neuen Ordner erstellt. Total für mich gearbeitet.
Hinweis: Ich verwende OSX.
quelle
Nur eine schnelle Anmerkung:
Wenn Sie versucht haben, mongod auszuführen, ohne zuvor die Berechtigungen zu ändern, befindet sich wahrscheinlich eine mongod.lock-Datei (und einige andere Dateien) im Verzeichnis / data / db. Selbst nachdem Sie die Berechtigungen für das Verzeichnis / data / db geändert haben, um Zugriff auf Ihren $ USER zu gewähren, erhalten Sie weiterhin die Meldung "Sperrdatei kann nicht erstellt / geöffnet werden: /data/db/mongod.lock errno: 13 Berechtigung verweigert " Error. Wenn Sie ls -al / data / db ausführen, werden Sie wahrscheinlich feststellen, dass die Berechtigungen für die einzelnen Dateien weiterhin auf root für den Benutzer und nicht auf $ USER festgelegt sind. Sie sollten die Datei mongod.lock und auch die anderen entfernen. Wenn Sie mongod erneut ausführen, sollte alles funktionieren, und Sie können überprüfen, ob die Dateiberechtigungen mit den Verzeichnisberechtigungen übereinstimmen, indem Sie ls -al erneut ausführen.
quelle
Erstellen Sie ein Verzeichnis im Stammverzeichnis
Wechseln Sie nun den Besitzer
Du bist gut zu gehen!
Anstatt zu verwenden
sudo mongod
, müssen Sie nicht jedes Mal ein Passwort eingeben, aber für das eigentliche Projekt, das Sie verwenden solltensudo mongod
, geben Sie dem normalen Benutzer keine Erlaubnis!quelle
Beim Versuch, mongodb zu starten, wurde immer wieder der folgende Fehler angezeigt.
Ich habe den folgenden Befehl verwendet:
Die Lösung für mich war, dass ich das "=" - Zeichen nicht brauchte und dies den Fehler verursachte. So tat ich
Ich wollte das nur rauswerfen, weil der Fehler in keiner Weise angibt, dass dies das Problem ist. Ich habe fast den Inhalt des Verzeichnisses ~ / mongo-data entfernt, um zu sehen, ob das geholfen hat. Ich bin froh, dass ich mich daran erinnerte, dass cli args manchmal nicht das "=" - Zeichen verwenden.
quelle
Bis zu diesem Datum dachte ich auch, dass wir diesen Ordner / data / db erstellen müssen, um den Befehl mongod zu starten.
Aber vor kurzem habe ich versucht, mongod mit dem Dienstbefehl zu starten, und es hat bei mir funktioniert, und es war nicht erforderlich, das Verzeichnis / data / db zu erstellen.
Um den Status von Mongod zu überprüfen, können Sie den folgenden Befehl ausführen.
quelle
Diese Lösung löst mein Problem
Erstellen Sie ein Verzeichnis als
sudo mkdir -p / data / db
Dadurch wird ein Verzeichnis mit dem Namen db erstellt und anschließend versucht, mit Befehlen zu beginnen
Sudo Mongod
Wenn Sie einen anderen Fehler oder ein Problem beim Starten von Mongod erhalten, finden Sie möglicherweise ein Problem als
und finden Sie den Mongod Running Port und beenden Sie den Prozess. Eine andere Möglichkeit besteht darin, beim Starten von mongod as einen speziellen Port zu erstellen
quelle
Geben Sie "id" am Terminal ein, um die verfügbaren Benutzer-IDs anzuzeigen, die Sie angeben können. Geben Sie dann einfach ein
"sudo chown -R idname / data / db"
Das hat bei mir geklappt! Hoffe, dies löst Ihr Problem.
quelle
In aktuelleren Versionen von MongoDB habe ich 3.2.10, es wird standardmäßig in gespeichert
/var/lib/mongodb
quelle
mongod --dbpath /var/lib/mongodb
hilft unter diesen UmständenNach der (Neu-) Installation des Tools-Pakets wurde auf einem Windows 10-Gerät ein ähnlicher Fehler angezeigt.
Lösung Analog wie für die Linux-Systeme erläutert: Es reicht aus, nur den Ordner zu erstellen, um das zu starten
mongod.exe
(mongoDB-Server) .Ich dachte, ich könnte es Leuten überlassen, die hier auf einem Windows-Gerät dieselben Suchbegriffe haben.
quelle
Ich wollte hier nur darauf hinweisen, dass, wenn Sie dies versuchen und auf etwas stoßen
mkdir: /data/db: Read-only file system
, Sie bitte diesen Kommentar lesen, der mir geholfen hat: https://stackoverflow.com/a/58895373 .Auf diese Weise wird jeder, der diese Antwort erhält und Control F für "schreibgeschützt" ausführt, dies sehen
quelle
Es gibt einen wirklich dummen Weg, um dieses Problem zu schaffen, für das ich Pionierarbeit geleistet habe:
1) Lassen Sie Ihre Mongo-Installation für eine Weile. 2) Kommen Sie zurück und der Server läuft nicht. 3) Versuchen Sie, ihn zu starten, aber verwenden Sie diesmal kein Sudo. 4) Mongo kann keine Daten finden / db /, da es jetzt angezeigt wird das Benutzer-Home-Verzeichnis anstelle des su-Home-Verzeichnisses
Ja, es ist wirklich dumm, aber wenn es eine Weile her ist, seit Sie im System waren, kann es Sie stolpern.
Kurze Antwort: Stellen Sie sicher, dass Sie mongo mit demselben implizierten Home-Verzeichnis ausführen
quelle