Wie bringe ich mongo dazu, ein gemountetes Laufwerk auf ec2 zu verwenden? Ich verstehe es wirklich nicht. Ich habe ein Volume an ec2 angehängt, das Laufwerk als root formatiert und als root gestartet und doch als root kann ich nicht darauf zugreifen? Ich laufe auf Ubuntu 12.04. Kein anderer Mongo läuft
Ich sehe, dass Mongo in / data, dh / data / db, ein 'db'-Verzeichnis erstellt hat
cd /
ls -al
drwxr-xr-x 4 root root 4096 Mar 5 16:28 data
cd /data
ls -al
total 28
drwxr-xr-x 4 root root 4096 Mar 5 16:28 .
drwxr-xr-x 24 root root 4096 Mar 5 16:28 ..
drwxr-xr-x 2 root root 4096 Mar 5 16:28 db
drwx------ 2 root root 16384 Mar 5 16:20 lost+found
sudo mkfs.ext3 /dev/xvdh
sudo mkdir /data
sudo su - -c 'echo "/dev/xvdh %s auto noatime 0 0" | sudo tee -a /etc/fstab'
sudo mount /data
sudo service mongodb start
mongodb start/running, process 17169
sudo ps -ef | grep mongod
ubuntu 15763 15634 0 16:32 pts/2 00:00:00 tail -f mongodb.log
ubuntu 18049 15766 0 16:43 pts/3 00:00:00 grep --color=auto mongod
Tue Mar 5 16:33:15 [initandlisten] MongoDB starting : pid=15890 port=27017 dbpath=/data 64-bit host=aws-mongo-server-east-staging-20130305161917
Tue Mar 5 16:33:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar 5 16:33:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar 5 16:33:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar 5 16:33:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar 5 16:33:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar 5 16:33:15 dbexit:
Tue Mar 5 16:33:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar 5 16:33:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar 5 16:33:15 [initandlisten] shutdown: going to close sockets...
Tue Mar 5 16:33:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar 5 16:33:15 [initandlisten] shutdown: lock for final commit...
Tue Mar 5 16:33:15 [initandlisten] shutdown: final commit...
Tue Mar 5 16:33:15 [initandlisten] shutdown: closing all files...
Tue Mar 5 16:33:15 [initandlisten] closeAllFiles() finished
Tue Mar 5 16:33:15 [initandlisten] shutdown: removing fs lock...
Tue Mar 5 16:33:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar 5 16:33:15 dbexit: really exiting now
Unten ist, wenn ich neu starte, wenn ich eine Sperrdatei entferne ....
Tue Mar 5 16:59:15 [initandlisten] MongoDB starting : pid=21091 port=27017 dbpath=/data 64-bit host=aws-mongo-server-east-staging-20130305161917
Tue Mar 5 16:59:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar 5 16:59:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar 5 16:59:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar 5 16:59:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar 5 16:59:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar 5 16:59:15 dbexit:
Tue Mar 5 16:59:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar 5 16:59:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar 5 16:59:15 [initandlisten] shutdown: going to close sockets...
Tue Mar 5 16:59:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar 5 16:59:15 [initandlisten] shutdown: lock for final commit...
Tue Mar 5 16:59:15 [initandlisten] shutdown: final commit...
Tue Mar 5 16:59:15 [initandlisten] shutdown: closing all files...
Tue Mar 5 16:59:15 [initandlisten] closeAllFiles() finished
Tue Mar 5 16:59:15 [initandlisten] shutdown: removing fs lock...
Tue Mar 5 16:59:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar 5 16:59:15 dbexit: really exiting now
chown mongodb:mongodb on /var/lib/monogdb
, auch auf das Datenverzeichnis.Antworten:
Ich hatte das gleiche Problem auf einer Ubuntu ec2-Instanz. Ich habe diesen Amazon-Artikel auf Seite 7 verfolgt:
http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf
Der Mongodb-Pfad in
/etc/mongodb.conf
wurde auf/var/lib/mongodb
(primärer Installationsort und Arbeitsweise) festgelegt. Als ich zu/data/db
(EBS-Volume) wechselte, wurde "errno: 13 Permission verweigert" angezeigt.sudo service mongodb stop
.ls -la
gesehen, welcher Gruppe und welchem Eigentümer Mongodb/var/lib/mongodb
(vorhandener Pfad) zugewiesen ist, und ich habe den/data/db
(neuen Pfad) mitchown
und entsprechend geändertchgrp
. (Beispiel:sudo chown -R mongodb:mongodb /data/db
)etc/mongodb.conf
zu aktualisiert/data/db
und die alten Mongo-Dateien im/var/lib/mongodb
Verzeichnis gelöscht .sudo service mongodb start
und wartete ungefähr eine Minute. Wenn Sie versuchen, sofort eine Verbindung zu 27017 herzustellen, können Sie dies nicht./data/db
Minutenüberprüfung (EBS-Volume) sollte Mongo ein Tagebuch, mongod.lock, local.ns, local.0 usw. abgelegt haben. Wenn nicht, versuchensudo service mongodb restart
Sie es eine Minute später.Ich habe gerade über eine Stunde damit verbracht. Das Ändern der Gruppe und das Löschen der alten Dateien ist wahrscheinlich nicht erforderlich, aber das hat bei mir funktioniert.
Dies ist ein großartiges Video zum Mounten eines ebs-Volumes an eine ec2-Instanz:
http://www.youtube.com/watch?v=gBII3o3BofU
quelle
Ich benutze diese Methode, um das Problem zu lösen:
quelle
-R
Option hinzu und es ist perfekt :)id -u
/ data / db für die Uneingeweihten. :)sudo chown $USER /data/db
anstelle des ursprünglichen Befehls auszuführen.id -U
oder so nicht$USER
. Mongo hat einen eigenen Benutzer / eine eigene Gruppe. Sie können und sollten mongodb hart codieren: mongodb. so ist der Befehl einfachsudo chown -R mognodb:mognodb /data/db
In meinem Fall (AWS EC2-Instanz, Ubuntu) hat geholfen:
Und danach hat alles gut funktioniert.
quelle
/data/db
anUSERNAME
Sie müssen nur Zugriff auf Ihre geben
/data/db
Ordner .Typ
sudo chown -R <USERNAME> /data/db
, ersetzen<USERNAME>
durch Ihren Benutzernamen.Sie können Ihren Benutzernamen durch Eingabe finden
whoami
.quelle
Ich habe mongodb mit EBS auf einem EC2 mit Ubuntu 14.04 nach diesem Tutorial installiert:
http://docs.mongodb.org/ecosystem/platforms/amazon-ec2/
Aber anstelle des vorgeschlagenen Chowns habe ich:
Um das Problem zu lösen
quelle
Ich hatte ein ähnliches Problem, der eigentliche Grund war, dass bereits eine Mongod-Sitzung von meinem vorherigen Versuch ausgeführt wurde.
Ich rannte
und alles andere lief wie erwartet.
killall
Der Befehl würde ein TERM-Signal an alle Prozesse mit einer echten UID senden. Dies tötet also alle laufenden Instanzen von Mongod, so dass Sie Ihre eigenen starten können.quelle
Bis heute habe ich versucht, mich durch die Datei zum Erstellen / Öffnen der Sperre zu bewegen: /data/db/mongod.lock errno: 13 Berechtigung verweigert Wird eine Mongod-Instanz bereits ausgeführt?, Beendet und versucht, alle oben angegebenen Antworten auf Lösen Sie dieses Problem, daher hat nichts durch Hinzufügen geklappt
Es sei denn, ich habe meine aktuelle Benutzerberechtigung zum Standortpfad von hinzugefügt
Hoffe das hilft jemandem. Außerdem habe ich gerade Mongo DB auf meinem Pi installiert. Prost!
quelle
Ich hatte ein ähnliches Problem und befolgte alle obigen Anweisungen zum Eigentümerwechsel mit Sudo Chown usw. Nach den Änderungen lief immer noch eine Instanz von Mongodb im Hintergrund. Laufen
zeigte mir andere Aufgaben mit Mongo im Hintergrund, die nicht richtig geschlossen wurden. Ich habe dann kill auf allen ausgeführt und konnte dann meinen Server starten.
quelle
Für Mac - Benutzer:
Führen Sie ls ld / data / db /
Output sollte so etwas wie drwrx-xr-x 20 singh Rad 680 21. Juli 05.49 / data / db /
Wo singh ist der Eigentümer und Rad ist die Gruppe es gehört .
Führen Sie sudo chown -R singh: Rad / data / db aus.
Führen Sie mongod aus
quelle
Das Entfernen der Datei mongodb.lock war in meinem Fall nicht das Problem. Ich habe dies getan und eine Fehlermeldung bezüglich des verwendeten Ports erhalten: [initandlisten] listen (): bind () fehlgeschlagen errno: 98 Adresse, die bereits für Socket verwendet wird: 0.0.0.0:27017. Ich habe hier eine andere Lösung gefunden: Der lokale Mongodb-Server kann nicht mit Anweisungen zum Beenden des Prozesses gestartet werden:
Finden Sie von netstat heraus, auf welchem Prozess der Mongodb-Port ausgeführt wird (27017).
sudo netstat -tulpn | grep :27017
Die Ausgabe lautet: tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1412 / mongod
Töte den entsprechenden Prozess.
sudo kill 1412
(Ersetzen Sie 1412 durch Ihre in Schritt 1 gefundene Prozess-ID.)Und ich konnte mongodb wieder erfolgreich starten. Ich glaube, meine lief immer noch vor einer unsachgemäßen Abschaltung.
quelle
Wenn Sie diesen Fehler unter Windows mit dem Task-Manager haben, beenden Sie die ausgeführte Instanz von "mongod.exe". Sobald dies erledigt ist, löschen Sie die Datei mongo.lock dauerhaft und führen Sie mongod.exe aus. Danach sollte es perfekt funktionieren.
quelle
Mein Mongo (3.2.9) wurde unter Ubuntu installiert und meine Protokolldatei hatte die folgenden Zeilen:
2016-09-28T11: 32: 07.822 + 0100 I CONTROL [initandlisten] dbexit: rc: 100
Das Problem lag also in den Berechtigungen für den Ordner / var / lib / mongodb.
Es wurde behoben, obwohl mir klar wurde, dass dies möglicherweise nicht zu sicher ist (es ist meine eigene Entwicklungsbox, die ich in meinem Fall bin). Nach der Änderung funktionierten sowohl die Datenbank als auch die Authentifizierung.
quelle
In Mycase
In Mongodb Version 2.6.11 ist das Standard-Datenbankverzeichnis
/var/lib/mongodb/
$ sudo chown -R
id -u
/ var / lib / mongodb /$ sudo chown -R
id -u
/var/lib/mongodb/mongod.lock$ sudo /etc/init.d/mongod stop
$ sudo /etc/init.d/mongod start
quelle
Ich habe das gleiche Problem, als ich den mongod-Befehl nach der Installation unter Windows 10 ausgeführt habe. Ich habe den Mongodb-Dienst gestoppt und erneut gestartet. Arbeiten wie ein Zauber
Befehl zum Beenden des Mongodb-Dienstes (in Windows):
net stop mongodb
Befehl zum Starten des Mongodb-Servers:
mongod --dbpath PATH_TO_DATA_FOLDER
quelle
Auf einer Fedora 18 mit Mongo 2.2.4-Instanz konnte ich einen ähnlichen Fehler umgehen, indem ich SELinux durch Aufrufen deaktivierte
setenforce 0
als root .Übrigens war dies eine Unternehmensumgebung, keine Amazon EC2-Instanz, aber die Symptome waren ähnlich.
quelle
In meinem Fall wurde das Problem durch Entfernen der Protokolldatei behoben .
Obwohl sich die Fehlermeldung speziell auf die Sperrdatei bezieht :
quelle
Nachdem ich Mongod getötet hatte, hatte ich nur das gleiche Problem: Ich konnte Mongod nicht starten.
2015-08-03T05:58:41.339+0000 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongodbtest/replset/data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Nachdem ich die Sperre direkt gelöscht habe, kann ich den Mongod-Prozess neu starten.
quelle
Folgendes habe ich getan, um das Problem zu beheben:
$ sudo mkdir -p / data / db
$ export PATH = / usr / local / Cellar / mongodb / 3.0.7 / bin: $ PATH
$ sudo chown -R
id -u
/ data / dbund dann Mongo zu starten ...
$ mongod
quelle
Ich hatte das gleiche Problem.
Ich habe es gelöst, indem ich den Selinux-Status mit dem folgenden Befehl in "Zulässig" geändert habe:
quelle
Kennen Sie
ls -la
den Benutzer und die Gruppe von / var / log / mongodb. Dannsudo chown -R user:group /data/db
laufen Sie jetztsudo service mongodb start
. Überprüfen Sie den Status mitsudo service mongodb status
quelle
Stellen Sie unter Windows sicher, dass die Konsole als Administrator gestartet ist
quelle
Sie könnten es auf diese Weise versuchen. 1.
aber manchmal ist dies nicht nützlich. 2 .. Wenn der oben beschriebene Weg nicht sinnvoll ist, können Sie Folgendes versuchen:
oder Typ:
um den Ausgabestream zu erhalten
quelle
Für mich unter CentOS 6.x:
sudo chown -R mongodb:mongodb <db-path> sudo service mongod restart
Und ich habe eine benutzerdefinierte gesetzt
db-path
in/etc/mongod.conf
.quelle
Wenn Sie buchstäblich eine Zeile wünschen, die den Befehlen in Ihrer ursprünglichen Frage entspricht, können Sie einen Alias verwenden:
https://stackoverflow.com/a/11777141/7160782
quelle
In Centos Server
das funktioniert bei mir
quelle
Haben Sie einen ähnlichen Fehler, fest mit all Datensätze zu entfernen (in meinem Fall Verzeichnis
journals
und Dateimongo.lock...
), nach dem Check - Port mitsudo lsof -i:27017
, wenn smth darauf laufendenkill <PID of the process>
, und versuchen zu laufen./mongod
wiederquelle
Fix:
sudo mongod
Ich hatte das gleiche Problem, indem ich mongod mit sudo-Berechtigungen ausführte , um es zu beheben . Ich komme aus einer Windows-Umgebung und habe nur verwendet
mongod
den Daemon gestartet. Nun, es sieht so aus, als ob wir die Superuser-Berechtigungen benötigen, um auf / data / db zuzugreifen.Sie können auch Nicht-Root-Benutzern Lese- und Schreibberechtigungen für diesen Pfad erteilen. Überprüfen Sie die Antworten oben für eine Anleitung!
quelle
Jedes Mal, wenn Sie versuchen, Mongod zu starten, geben Sie einfach ein
oder wenn Sie dies dauerhaft beheben möchten, versuchen Sie einfach, dem Ordner / data / db eine rwx-Prämission zu geben
quelle