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

Mongod se plaint qu'il n'y a pas de dossier /data/db

Vous avez créé le répertoire au mauvais endroit

/data/db signifie qu'il se trouve directement sous le répertoire racine '/', alors que vous avez créé 'data/db' (sans le premier /) probablement juste à l'intérieur d'un autre répertoire, tel que le répertoire personnel '/root'.

Vous devez créer ce répertoire en tant que root

Soit vous devez utiliser sudo , par exemple. sudo mkdir -p /data/db

Ou vous devez faire su - pour devenir superutilisateur, puis créez le répertoire avec mkdir -p /data/db

Remarque :

MongoDB a également une option où vous pouvez créer le répertoire de données à un autre emplacement, mais ce n'est généralement pas une bonne idée, car cela complique légèrement les choses telles que la récupération de la base de données, car vous devez toujours spécifier le chemin db manuellement. Je ne recommanderais pas de faire cela.

Modifier :

le message d'erreur que vous obtenez est "Impossible de créer/d'ouvrir le fichier de verrouillage :/data/db/mongod.lock errno:13 Autorisation refusée" . Le répertoire que vous avez créé ne semble pas avoir les autorisations et la propriété correctes -- il doit être accessible en écriture par l'utilisateur qui exécute le processus MongoDB.

Pour voir les autorisations et la propriété du répertoire '/data/db/', procédez comme suit :(voici à quoi devraient ressembler les autorisations et la propriété)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

Le côté gauche "drwxr-xr-x" affiche les autorisations pour l'utilisateur, le groupe et les autres. "mongod mongod" indique à qui appartient le répertoire et à quel groupe appartient ce répertoire. Les deux sont appelés "mongod" dans ce cas.

Si votre répertoire '/data/db' n'a pas les autorisations et la propriété ci-dessus, faites ceci :

Vérifiez d'abord l'utilisateur et le groupe de votre utilisateur mongo :

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

Vous devriez avoir une entrée pour mongod dans /etc/passwd , car c'est un démon.

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

Vous pouvez également utiliser le nom d'utilisateur et le nom de groupe, comme suit :(ils peuvent être trouvés dans /etc/passwd et /etc/group )

sudo chown -R mongod:mongod /data/db 

ça devrait le faire fonctionner..

Dans les commentaires ci-dessous, certaines personnes ont utilisé ceci :

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

ou

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

L'inconvénient est que $USER est un compte qui a un shell de connexion. Les démons ne devraient idéalement pas avoir de shell pour des raisons de sécurité, c'est pourquoi vous voyez /bin/false dans le grep du fichier de mot de passe ci-dessus.

Cochez ici pour mieux comprendre la signification des permissions du répertoire :

http://www.perlfect.com/articles/chmod.shtml

Consultez peut-être également l'un des tutoriels que vous pouvez trouver via Google :"UNIX pour les débutants"