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

MongoDB unter Ubuntu startet nicht als Dienst, nichts im Protokoll

OK, das kommt alles auf Berechtigungen an, aber gehen wir Schritt für Schritt vor. Wenn Sie sudo mongod ausführen Es lädt überhaupt keine Konfigurationsdatei, es beginnt buchstäblich mit den einkompilierten Standardwerten - Port 27017, Datenbankpfad von /data/db usw. - deshalb haben Sie den Fehler erhalten, dass Sie diesen Ordner nicht finden können. Die "Ubuntu-Standardeinstellung" wird nur verwendet, wenn Sie sie auf die Konfigurationsdatei verweisen (wenn Sie anfangen, den Dienstbefehl zu verwenden, wird dies hinter den Kulissen für Sie erledigt).

Als nächstes haben Sie es so ausgeführt:

sudo mongod -f /etc/mongodb.conf

Wenn es vorher keine Probleme gab, dann gibt es sie jetzt - Sie haben den Prozess mit Ihrer normalen Konfiguration (die auf Ihren üblichen Datenbankpfad und Ihr Protokoll zeigt) als Root-Benutzer ausgeführt. Das bedeutet, dass es jetzt eine Reihe von Dateien in diesem normalen MongoDB-Ordner mit dem Benutzer:Gruppe von root:root geben wird .

Dies führt zu Fehlern, wenn Sie versuchen, ihn erneut als normalen Dienst zu starten, da der mongodb-Benutzer (als der der Dienst versucht wird, auszuführen) keine Berechtigung hat, auf diese root:root zuzugreifen Dateien, und vor allem wird es wahrscheinlich nicht in der Lage sein, in die Protokolldatei zu schreiben, um Ihnen Informationen zu geben.

Um es als normalen Dienst auszuführen, müssen wir diese Berechtigungen daher korrigieren. Stellen Sie zunächst sicher, dass MongoDB derzeit nicht als Root ausgeführt wird, und dann:

cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .

Das sollte es beheben (vorausgesetzt, die user:group ist mongodb:mongodb ), obwohl es wahrscheinlich am besten ist, dies mit einem ls -al zu überprüfen oder ähnliches sicher. Sobald dies erledigt ist, sollten Sie in der Lage sein, den Dienst wieder erfolgreich zu starten.