MongoDB sur Ubuntu ne démarre pas en tant que service, rien dans le journal

Je cours MongoDB 2.2 sur Ubuntu et si je cours:

sudo mongod

Je reçois une erreur qu'il ne peut pas trouver /data/db, qui n'est pas où se trouve la base de données. En mongod.conf le chemin de la base de données est spécifié comme le défaut Ubuntu 10gen /var/lib/mongodb qui est l'emplacement de la base de données. On dirait que mongod ne trouve pas le fichier conf. Alors quand je cours:

sudo mongod -f /etc/mongodb.conf

Le serveur démarre correctement et de sortie est enregistré dans le fichier journal: /var/log/mongodb/mongodb.log. Tout est heureux. Je peux passer à un autre shell, connectez-vous à Mongo shell, voir le bases de données et exécuter des requêtes.

Donc, j'annule cela et essaie de fonctionner en tant que service:

> sudo status mongodb
mongodb stop/waiting
> sudo start mongodb
mongodb start/running, process 10468

Semble bon jusqu'à présent, mais le serveur mongo n'a pas démarré. Exécuter un autre:

> sudo status mongodb
mongodb stop/waiting
> mongo
MongoDB shell version: 2.2.0
connecting to: test
Sat Sep  1 19:07:43 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed

"test" n'est pas la base de données correcte, et rien n'apparaît dans le fichier journal.

Je ne sais pas ce qui pourrait être mal. J'ai vérifié les scripts arrivistes et ils semblent bien. /etc/init/mongodb.conf fonctionne:

mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb.conf
46
demandé sur Cœur 2012-09-02 03:11:11

9 réponses

OK, tout cela se résume à des autorisations, mais prenons-le étape par étape. Lorsque vous exécutez sudo mongod il ne charge pas du tout un fichier de configuration, il commence littéralement par le compilé dans defaults-port 27017, Chemin de base de données de / data / db etc. - c'est pourquoi vous avez l'erreur de ne pas être en mesure de trouver ce dossier. Le "Ubuntu default" n'est utilisé que lorsque vous le pointez sur le fichier de configuration (si vous commencez à utiliser la commande de service, cela se fait pour vous dans les coulisses).

Suivant vous avez couru comme ceci:

sudo mongod -f /etc/mongodb.conf

S'il n'y avait pas de problèmes avant, alors il y aura maintenant - vous avez exécuté le processus, avec votre configuration normale (pointant sur votre dbpath et votre journal habituels) en tant qu'utilisateur root. Cela signifie qu'il va maintenant être un certain nombre de fichiers dans ce normale MongoDB dossier avec l'utilisateur:groupe de root:root.

Cela provoquera des erreurs lorsque vous essayez de le redémarrer en tant que service normal, car l'utilisateur mongodb (que le service tentera d'Exécuter) ne le fera pas avoir la permission d'accéder à ces fichiers root:root, et plus particulièrement, il ne sera probablement pas en mesure d'écrire dans le fichier journal pour vous donner des informations.

Par conséquent, pour l'exécuter en tant que service normal, nous devons corriger ces autorisations. Tout d'abord, assurez-vous que MongoDB n'est pas en cours d'exécution en tant que root, puis:

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

Cela devrait le réparer (en supposant que l'utilisateur: groupe est mongodb:mongodb), bien qu'il soit probablement préférable de vérifier avec un ls -al ou similaire pour être sûr. Une fois cela fait vous devriez être en mesure d'obtenir le service pour démarrer avec succès à nouveau.

96
répondu Adam Comerford 2016-04-09 17:31:35

Vérifiez d'Abord que le mongodb utilisateur/groupe a l'autorisation d'écrire à la fois à l' données répertoire et log fichier:

$ sudo chown-R mongodb: mongodb / var / lib / mongodb/.

$ sudo chown-R mongodb: mongodb / var/log / mongodb.log

Démarrez MongoDB en tant que démon (processus d'arrière-plan) en utilisant la commande suivante:

$ mongod --fourche --dbpath /var/lib/mongodb/ --smallfiles --logpath /var/log/mongodb.journal -- logappend

Pour arrêter MongoDB entrez le CLI Mongo, accédez à l'administrateur et exécutez la commande shutdown:

$ ./ mongo

> utiliser admin -

> db.shutdownServer ()

Ref: http://www.mongodb.org/display/DOCS/Starting+et+Arrêt+Mongo

34
répondu nelsonic 2012-10-25 22:31:42

Moi aussi j'ai eu le même problème. Je suis donc allé à cd /var/lib/mongodb/ et supprimé le mongod.verrouiller le fichier Puis il a travaillé pour moi.

9
répondu Damodaran 2012-12-25 01:06:35

Rien n'a fonctionné pour moi, alors j'ai trouvé que c'était un problème d'autorisations sur le répertoire /tmp:

sudo chmod 1777 /tmp
sudo chown root:root /tmp
2
répondu bekce 2016-01-06 12:03:17

Après avoir vérifié toutes les autorisations dans les dossiers data, journal et log comme suggéré par @nelsonic, mon problème a été résolu en donnant l'autorisation de verrouiller le fichier dans le dossier / tmp

sudo chown mongod:mongod mongodb-27017.sock  

Je l'exécutais en tant QU'instance AWS Amazon Linux. J'ai compris cela en exécutant en tant qu'utilisateur mongod comme ci-dessous, puis en recherchant le code d'erreur. Cela pourrait être utile pour d'autres dépannages.

sudo -S -u mongod mongod -f /etc/mongod.conf
2
répondu Pedro Israel 2017-01-13 17:16:02

Aucune des réponses ci-dessus n'a fonctionné pour moi. J'ai finalement compris en déboguant le script d'initialisation avec:

Sudo bash-x / etc / init.d/mongodb démarrer

Et le voir passait le mauvais chemin de configuration à mongod. J'ai simplement changé la ligne dans /etc/init.d / mongodb à partir de " CONF= / etc / mongodb.conf " à " CONF = /etc / mongod.conf". Version 2 utilise l'ancien, et l'installation de la version 3 Ajouté/etc / mongod.conf avec le nouveau format mais apparemment n'a pas mis à jour le script d'initialisation.

MISE À JOUR: I maintenant bien étranger problème où le script fonctionne, mais seulement si je le lance avec "sudo bash -x /etc/init.d/mongodb démarrer" et pas avec "sudo service mongodb démarrer". Même chose pour stop.

1
répondu Abram 2016-08-29 05:43:18

Après qu'aucune des réponses ci-dessus n'ait fonctionné pour moi, la suppression de mon fichier journal a ramené Mongo à la vie.

0
répondu Dave 2016-10-31 04:03:52

Ces jours-ci, cette erreur peut se produire si vous avez mis à jour mongod et que vous exécutez une ancienne base de données. Mongod utilisera le moteur wiredTiger par défaut et vous aurez une base de données mmapv1

Modifiez les paramètres du moteur dans/etc / mongod.conf

# engine: wiredTiger
engine: mmapv1

Attention-YAML est sensible aux espaces

Journalctl / systemd ne verra pas ce problème. Vérifiez le log mongod dans /var / log / mongodb / mongod.log

Je suppose que vous pouvez convertir la base de données avec quelque chose comme les étapes décrites ici

Https://docs.mongodb.com/manual/tutorial/change-standalone-wiredtiger/

0
répondu Mark 2017-05-25 18:59:29

Essayez simplement cette commande:

sudo chown mongodb /tmp/mongodb-27017.sock
0
répondu J.Jai 2017-06-14 13:33:54