MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

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

OK, tout cela se résume aux autorisations, mais allons-y étape par étape. Lorsque vous exécutez sudo mongod il ne charge pas du tout un fichier de configuration, il commence littéralement par les valeurs par défaut compilées - port 27017, chemin de la base de données de /data/db etc. - c'est pourquoi vous avez l'erreur de ne pas pouvoir trouver ce dossier. Le "Ubuntu par défaut" 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).

Ensuite, vous l'avez exécuté comme ceci :

sudo mongod -f /etc/mongodb.conf

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

Cela provoquera des erreurs lorsque vous essayerez de le redémarrer en tant que service normal, car l'utilisateur mongodb (que le service tentera d'exécuter) n'aura pas l'autorisation d'accéder à ces root:root fichiers, et plus particulièrement, il ne pourra probablement pas é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 ne s'exécute pas actuellement 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 résoudre le problème (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 pouvoir redémarrer le service avec succès.