J'ai des problèmes pour lancer mongod en tant que service :comment est-il possible que cela fonctionne lorsque je fais sudo mongod -f /etc/mongod.conf mais lorsque je le lance avec sudo service mongod start, j'obtiens une erreur dans le journal
Le sudo
la commande démarre mongod
avec root
autorisations (alias accès superutilisateur). Si vous exécutez mongod
en tant que service, l'utilisateur et le groupe sont configurés dans la définition du service (mongodb
pour les deux dans votre exemple).
Il n'est pas nécessaire d'exécuter le mongod
traiter en tant que root
utilisateur, et cela est fortement déconseillé conformément à la pratique de sécurité courante du principe du moindre privilège.
Si vous souhaitez tester une configuration à partir de la ligne de commande, vous pouvez utiliser sudo
pour s'exécuter avec un utilisateur spécifié au lieu de l'utilisateur par défaut (root).
Par exemple :
sudo -u mongodb mongod -f /etc/mongod.conf
En général, il est préférable d'utiliser une configuration de service plutôt que d'exécuter mongod
manuellement. Avec l'invocation manuelle, vous devrez également vous rappeler d'inclure des paramètres tels que le chemin du fichier de configuration (car il n'y a pas de chemin de configuration par défaut). Sans fichier de configuration, mongod
utilise également les options par défaut telles qu'un dbPath
de /data/db
.
Assertion :28595:13 :Autorisation refusée src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
La cause probable de vos erreurs d'autorisation est d'avoir précédemment démarré mongod
en tant que root
utilisateur. Certains répertoires et fichiers peuvent maintenant appartenir à l'utilisateur root, donc le mongodb
l'utilisateur ne peut pas y accéder. Votre erreur spécifique concerne l'accès aux fichiers dans le répertoire de données (c'est-à-dire le storage.dbPath
configuré dans mongod.conf
).
En supposant que vous n'avez pas modifié les chemins par défaut dans votre mongod.conf
fichier, vous devriez pouvoir ajuster de manière récursive les autorisations pour correspondre à ce que le mongod.service
définition attend.
Tout d'abord, assurez-vous d'avoir arrêté votre mongod
instance si elle est en cours d'exécution.
Ensuite, ajustez de manière récursive les autorisations à l'utilisateur et au groupe attendus :
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Vous devriez maintenant pouvoir démarrer mongod
en tant que service. Si le service ne démarre pas, il devrait y avoir plus de détails dans le mongod
fichier journal (en supposant que le fichier journal est accessible en écriture par le mongodb
utilisateur du service).