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

mongodb 3.4.3 Autorisation refusée wiredtiger_kv_engine.cpp 267 erreur avec ubuntu 16

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).