173 votes

MongoDB : exception dans initAndListen : 20 Tentative de création d'un fichier de verrouillage sur un répertoire en lecture seule : /data/db, se termine

J'ai créé /data/db dans le répertoire Root et exécuté ./mongod :

[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100

4 votes

On dirait un problème de permissions. L'utilisateur qui exécute mongod a-t-il le droit d'écrire dans le répertoire /data/db ? Partagez la sortie de ls -ld /data/db y id afin que nous puissions vous conseiller.

0 votes

Drwxr-xr-x 2 Root Root 4096

0 votes

Uid=1000(utilisateur) gid=1000(utilisateur) groups=1000(utilisateur),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

311voto

Bjorn Roche Points 3595

Le problème est que le répertoire que vous avez créé, /data/db appartient et ne peut être écrit que par l'utilisateur Root, mais vous exécutez mongod en tant que vous-même. Il y a plusieurs façons de résoudre ce problème, mais en fin de compte, vous devez donner les bonnes permissions au répertoire en question. S'il s'agit d'une production, je vous conseille de consulter la documentation et d'y réfléchir attentivement - vous devez probablement faire très attention.

Cependant, s'il ne s'agit que de tests et que vous avez juste besoin que cela fonctionne, vous pouvez essayer ceci, qui rendra le répertoire accessible en écriture à tous :

> sudo chmod -R go+w /data/db

ou ceci, ce qui fera que le répertoire vous appartiendra :

> sudo chown -R $USER /data/db

4 votes

Je pense que quelqu'un pourrait avoir besoin -R pour changer tous les /data/db à l'intérieur de manière récursive.

3 votes

Merci pour cela. Je l'ai essayé et j'ai toujours la même erreur

1 votes

Ce sujet date déjà un peu, mais pour moi, l'utilisation de chmod a généré une nouvelle erreur initAndListen : operation not permitted mais chown travaillé.

64voto

Sur un Mac, j'ai dû procéder comme suit :

sudo chown -R $USER /data/db
sudo chown -R $USER /tmp/

parce qu'il y avait aussi un fichier à l'intérieur /tmp auquel Mongo avait également besoin d'accéder

2 votes

Fonctionne sous Fedora 28 Linux

2 votes

Cela devrait être en haut

1 votes

Ça l'a fait pour moi aussi.

34voto

Bruce Grover Lee Points 405

Vous pouvez utiliser mongo comme Root, ça marche pour moi :

$ sudo mongod

31voto

drrossum Points 449

Si votre système utilise SELinux, assurez-vous que vous utilisez le bon contexte pour le répertoire que vous avez créé :

ls -dZ /data/db/
ls -dZ /var/lib/mongo/

et cloner le contexte avec :

chcon -R --reference=/var/lib/mongo /data/db

1 votes

Vous avez sauvé ma journée ! Merci beaucoup à vous

2 votes

Ls -dZ /var/lib/mongodb/ pour les versions ultérieures de mongo

17voto

hamdi Points 737

J'ai rencontré le même problème et la solution suivante a permis de résoudre ce problème. Vous devriez essayer la solution suivante.

sudo mkdir -p /data/db
sudo chown -R 'username' /data/db

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X