web-dev-qa-db-fra.com

MongoDB: exception in initAndListen: 20 Tentative de création d'un fichier de verrouillage dans un répertoire en lecture seule:/data/db, arrêtant

J'ai créé /data/db dans le répertoire racine et ai 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
98
whinytween96

Le problème est que le répertoire que vous avez créé, /data/db, appartient à l'utilisateur root et ne peut être écrit que par lui, mais vous exécutez mongod en tant que tel. Il existe plusieurs façons de résoudre ce problème, mais vous devez au final donner les autorisations appropriées au répertoire en question. Si c'est pour la production, je vous conseillerais de vérifier la documentation et d'y réfléchir attentivement - vous voudrez probablement prendre des précautions particulières.

Cependant, si ceci est juste pour le test et que vous avez juste besoin que cela fonctionne, vous pouvez essayer ceci, ce qui rendra le répertoire accessible en écriture pour tout le monde:

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

ou ceci, ce qui rendra le répertoire que vous possédez:

> Sudo chown -R $USER /data/db
211
Bjorn Roche

Sur un Mac, je devais faire ce qui suit:

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

parce qu'il y avait aussi un fichier dans /tmp auquel Mongo avait aussi besoin d'accéder

39

Vous pouvez utiliser mongo en tant que root, cela fonctionne pour moi:

$ Sudo mongod
33
Bruce Grover Lee

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
16
drrossum

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

Sudo mkdir -p/data/db
Sudo chown -R 'nom d'utilisateur'/data/db

15
hamdi

De bonnes solutions, mais je me demande pourquoi personne ne donne la solution pour Windows.

Si vous utilisez Windows, vous devez simplement "Exécuter en tant qu'administrateur" de la cmd.

2

J'ai rencontré exactement le même problème et je l'ai résolu et voici les explications étape par étape:

Avant d’essayer le reste, il suffit de changer le répertoire mongodb qui contient le répertoire bin de mongodb et d’utiliser simplement la commande dans le terminal:

Sudo bin/mongod  

si vous exécutez mongodb en tant qu’utilisateur root, il peut vous être demandé de saisir le mot de passe en tant qu’utilisateur root. Si vous ne parvenez toujours pas à exécuter mongodb, procédez comme suit:

Tout d'abord, voyons le mode de permission du répertoire de données de mongodb en tapant dans le terminal:

ls -ld/data

(p.s. ou nous pouvons simplement taper "ls -l /" pour voir les modes de permission de tous les répertoires et fichiers du répertoire racine, y compris le répertoire/data.)

Et le mode d'autorisation pour l'utilisateur root doit être "rwx", c'est-à-dire que l'utilisateur root peut lire, écrire et exécuter les fichiers . Pour ce faire, nous utilisons la commande pour changer le mode d'autorisation en tapant dans Terminal :

chmod 755/data  

(c’est-à-dire que 755 est une notation octale spécifique de l’argument de définition de l’autorisation). l’utilisateur et tout le monde ne pouvant que lire et exécuter.

Remarque: lorsque vous n'êtes pas autorisé à effectuer cette opération, tapez à la place:

Sudo chmod 755/data  

définir l'autorisation en tant qu'utilisateur root.

Ensuite, lorsque cette étape est terminée, reprenons les modes de permission en tapant À nouveau: ls -ld/data

et le résultat devrait ressembler à ceci:

drwxr-xr-x 3 roue de base 102 3 mars 17:00/data

(p.s.vous n'avez pas besoin de vous soucier du "d" au début) et notez que le réglage "rwxr-xr-x" est maintenant terminé.

Ensuite, nous sommes tous prêts et vous pouvez maintenant revenir au répertoire mongodb et taper: 

Sudo bin/mongod  

pour exécuter le mongodb.

J'espère que cela t'aides.

2
yifan li

Si vous vérifiez vos journaux mongodb et que vous obtenez une telle erreur, suivez simplement les étapes comme je l'ai fait. Cela est dû à des problèmes d'autorisation avec votre répertoire /data/db. J'utilise ubuntu16.04 et je trouve la solution en exécutant deux commandes simples comme suit.

Étape 1: Autorisez le répertoire/data/db: 

Sudo chmod -R 0777 /data/db

Étape 2: Essayez de démarrer le service Mongod en tant que:

Sudo service mongod start

Étape 3: Vérifier le statut du service Mongod:

Sudo service mongod status
1
Jitendra

il vous suffit d'exécuter la commande en tant que super utilisateur:

il suffit de taper depuis le terminal: Sudo su mongod

0
David Noleto