J'utilise mon nouveau mac pour la première fois aujourd'hui. Je suis le guide de démarrage sur mongodb.org jusqu'à l'étape où l'on crée le répertoire / data / db. btw, j'ai utilisé la route homebrew.
J'ouvre donc un terminal, et je pense que je suis dans ce que vous appelez le répertoire personnel, car lorsque je fais "ls", je vois des dossiers de Documents d'application de bureau Musique Musique Documents Documents et Bibliothèque.
J'ai donc fait un
mkdir -p /data/db
tout d'abord, il dit que l'autorisation a été refusée. J'ai continué d'essayer différentes choses pendant une demi-heure et finalement:
mkdir -p data/db
travaillé. et quand je "ls", un répertoire de données et imbriqué dedans un dossier db existe.
puis je lance mongod et il se plaint de ne pas trouver de données / db
Ai-je fait quelque chose de mal?
Maintenant, j'ai fait le
sudo mkdir -p /data/db
et quand je fais un "ls" je vois le répertoire de données et le répertoire db. à l'intérieur du répertoire db cependant, il n'y a absolument rien dedans et quand je lance maintenant mongod
Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit:
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now
EDIT Obtention d'un message d'erreur pour
sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument
Merci tout le monde!
grep mongo /etc/passwd /etc/group
. Si cela ne fonctionne pas, vérifiez le nom en vérifiant le propriétaire du répertoirels -ld /var/lib/mongo
. Ou pour voir le uid / gid faire ceci:ls -lnd /var/lib/mongo
. Dans mon casdrwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...
- cela signifie utiliser 487: 480 comme paramètreRéponses:
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 début /) probablement juste dans un autre répertoire, tel que le répertoire principal '/ root'.
Vous devez créer ce répertoire en tant que root
Soit vous devez utiliser
sudo
, par exemplesudo mkdir -p /data/db
Ou vous devez faire
su -
pour devenir superutilisateur, puis créer le répertoire avecmkdir -p /data/db
Remarque:
MongoDB a également une option où vous pouvez créer le répertoire de données dans 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 base de données, car vous devez toujours spécifier le chemin db manuellement. Je ne recommanderais pas de faire ça.
Éditer:
le message d'erreur que vous obtenez est "Impossible de créer / 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é)
Le côté gauche «drwxr-xr-x» affiche les autorisations pour l'utilisateur, le groupe et les autres. 'mongod mongod' montre à qui appartient le répertoire et à quel groupe ce répertoire appartient. 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, procédez comme suit :
Vérifiez d'abord quel utilisateur et quel groupe votre utilisateur mongo possède:
Vous devriez avoir une entrée pour mongod dans / etc / passwd, car c'est un démon.
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)
cela devrait le faire fonctionner ..
Dans les commentaires ci-dessous, certaines personnes ont utilisé ceci:
ou
L'inconvénient est que $ USER est un compte doté d'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.
Vérifiez ici pour mieux comprendre la signification des autorisations de répertoire:
http://www.perlfect.com/articles/chmod.shtml
Peut-être consultez également l'un des tutoriels que vous pouvez trouver via Google: "UNIX pour les débutants"
la source
ls -ld /data/
etls -ld /data/db/
.. vous verrez les autorisations de répertoire répertoriées sur le côté gauche, puis la propriété, puis le nom du répertoire. vous devez vous assurer que les répertoires sont accessibles en écriture par l'ID utilisateur qui exécute MongoDB.invalid arguement
sudo touch /data/db/mongod.lock
etsudo chmod 0777 /data/db/mongd.lock
. Elle a commencé tout de suite.sudo chown -R `id -u` /data/db
ousudo chown -R $USER /data/db
au lieu desudo chown mongod:mongod /data/db
faire l'affaire pour moiAprès avoir obtenu la même erreur que Nik
J'ai découvert ce qui semble avoir eu lieu d'utiliser le mauvais type de guillemets (aurait dû être backquotes ) Forums Ubuntu
Au lieu de cela, je viens d'utiliser
comme alternative et maintenant mongod a les autorisations dont il a besoin.
la source
Cela fonctionne pour moi, trouvé dans les commentaires:
la source
Créez le dossier.
Donnez-vous la permission du dossier.
Ensuite, vous pouvez courir
mongod
sanssudo
. Fonctionne sur OSX Yosemitela source
bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
Pour corriger cette erreur sur OS X, j'ai redémarré et arrêté le service:
$ brew services restart mongodb $ brew services stop mongodb
Puis j'ai couru
mongod --config /usr/local/etc/mongod.conf
et le problème avait disparu.L'erreur semble survenir après la mise à niveau du package homebrew mongodb.
la source
Installation via brew sur Mac où YOUR_USER_NAME et le personnel sont le groupe
la source
/etc/passwd
nom d'utilisateur - le groupe est probablement identique. C'est généralement soitmongo
oumongodb
.Si vous exécutez mongo sans arguments, cela suppose que vous exécutez sur la machine de production, il utilise donc les emplacements par défaut.
pour utiliser votre propre base de données (dev ou juste une autre):
la source
J'ai eu ce problème avec une configuration Mongodb existante. Je ne sais toujours pas pourquoi cela s'est produit, mais pour une raison quelconque, le processus Mongod n'a pas pu trouver le fichier mongod.config. Parce qu'il n'a pas pu trouver le fichier de configuration, il a essayé de trouver les fichiers DB dans / data / db, un dossier qui n'existait pas. Cependant, le fichier de configuration était toujours disponible, je me suis donc assuré que le processus dispose des autorisations sur le fichier de configuration et exécutez le processus mongod avec l'indicateur --config comme suit:
Dans le fichier de configuration lui-même, j'avais ce paramètre:
Et c'est ainsi que le processus pourrait retrouver le vrai dossier DB.
la source
J'ai fait
le 2018-02-01 et cela m'a donné la
mongodb
version 3.6.2.Invité par la réponse d’orluke ci-dessus, j’ai essayé
et tout a pris vie. Mon
mongoose.createConnection()
appel a fait ce que je voulais. Le GUI MongoDB Compass , la version communautaire, se connecterait. J'ai utilisé Compass pour regarder lalocal.startup_log
collection. Cela contenait un document, le journal de moi qui venait de démarrer le service mongoDB, et qui avaitet en effet il y avait un tel dossier:
et il y avait un
/usr/local/var/mongodb
répertoire avec beaucoup de fichiers obscurs. Il semble donc que l'installation fonctionne maintenant.Je ne sais pas si
brew services restart
le service s'exécute à la connexion. J'ai donc faitet espère que cela recommence après le redémarrage. Et, en effet, il l'a fait. En fait, maintenant, je pense que la bonne chose à faire après l'installation initiale est
et cela devrait démarrer le service et le redémarrer après le redémarrage.
la source
Votre commande aura créé la structure de répertoires dans le dossier actuel, pas le répertoire racine de votre ordinateur (qui est ce qui manque
/
).La première commande était correcte, mais comme vous essayez de créer un dossier dans
/
, qui est un répertoire protégé, vous devez le préfixer avecsudo
, ce qui est l'abréviation de "superuser do". On vous demandera ensuite votre mot de passe.Ainsi, la commande complète serait:
la source
Vous devez créer / data / db ... qui est un répertoire appelé / data / dans votre racine (ie / ) et un sous-dossier appelé / db / ...
Vous obtenez des erreurs d'autorisation car vous devez utiliser sudo pour créer un répertoire dans votre répertoire racine sous MacOS, sudo vous permet d'exécuter des commandes en tant qu'administrateur.
Alors, lancez ceci à la place ...
Cela vous demandera un mot de passe, c'est le même mot de passe que vous utilisez pour modifier les paramètres système (cette petite boîte de dialogue qui s'ouvre lorsque vous essayez de changer les choses dans les Préférences Système pour ecample), et probablement le même que celui que vous utilisez pour vous connecter.
la source
Vous essayez de créer un répertoire auquel vous n'avez pas accès root.
Pour tester mongodb, j'utilise simplement un répertoire de mon répertoire utilisateur comme:
Cela fera une base de données mongo dans temp / à partir de votre répertoire de travail actuel
la source
J'ai surmonté ce même problème en créant les dossiers / data / db avec mon gestionnaire de fenêtres. J'ai d'abord essayé de le faire via le terminal, et pour créer un dossier dans le répertoire racine, j'ai dû utiliser sudo.
Je suis juste allé dans le répertoire racine à l'aide du Finder et j'ai créé un nouveau dossier en utilisant 'Nouveau dossier'. Totalement travaillé pour moi.
Remarque: j'utilise OSX.
la source
Juste un petit mot:
Si vous avez essayé d'exécuter mongod sans modifier d'abord les autorisations, vous aurez probablement un fichier mongod.lock (et quelques autres fichiers) dans le répertoire / data / db. Même après avoir modifié les autorisations pour le répertoire / data / db pour donner accès à votre $ USER, vous continuerez à obtenir le "Impossible de créer / ouvrir le fichier de verrouillage: /data/db/mongod.lock errno: 13 Permission refusée " Erreur. Exécutez ls -al / data / db et vous verrez probablement que les autorisations pour les fichiers individuels sont toujours définies sur root pour l'utilisateur, pas sur votre $ USER. Vous devez supprimer le fichier mongod.lock et les autres également. Ensuite, lorsque vous exécutez à nouveau mongod, tout devrait fonctionner et vous pouvez vérifier que les autorisations de fichier correspondent aux autorisations de répertoire en exécutant à nouveau ls -al.
la source
Créer un répertoire dans la racine
Maintenant, changez le propriétaire
Vous êtes prêt à partir!
au lieu d'utiliser
sudo mongod
, vous n'avez pas besoin de mettre un mot de passe à chaque fois, mais pour le vrai projet que vous devez utilisersudo mongod
, ne donnez pas la permission à l'utilisateur normal!la source
J'ai continué à obtenir l'erreur suivante lorsque j'ai essayé de démarrer mongodb.
J'utilisais la commande suivante:
Le correctif pour moi était que je n'avais pas besoin du signe "=" et cela provoquait l'erreur. J'ai donc fait
Je voulais juste jeter cela parce que l'erreur ne spécifie en rien que c'est le problème. J'ai presque supprimé le contenu du répertoire ~ / mongo-data pour voir si cela m'a aidé. Heureux de me souvenir que cli args n'utilise parfois pas le signe "=".
la source
Jusqu'à cette date, je pensais également que nous devons créer ce dossier / data / db pour démarrer la commande mongod.
Mais récemment, j'ai essayé de démarrer mongod avec la commande de service et cela a fonctionné pour moi et il n'était pas nécessaire de créer le répertoire / data / db.
Quant à vérifier l'état de mongod, vous pouvez exécuter la commande suivante.
la source
Cette solution résout mon problème
Créez un répertoire comme
sudo mkdir -p / data / db
Cela va créer un répertoire nommé db et essayer de démarrer avec des commandes
sudo mongod
Si vous obtenez une autre erreur ou un problème avec le démarrage de mongod, vous pouvez trouver un problème comme
et trouver le port d'exécution mongod et tuer le processus. Une autre façon est de créer un port spécifique lors du démarrage de mongod en tant que
la source
Tapez "id" sur le terminal pour voir les identifiants utilisateur disponibles que vous pouvez donner, puis tapez simplement
"sudo chown -R idname / data / db"
Cela a fonctionné pour moi! J'espère que cela résout votre problème.
la source
Dans les versions plus récentes de MongoDB, j'ai 3.2.10, il est stocké par défaut dans
/var/lib/mongodb
la source
mongod --dbpath /var/lib/mongodb
aide dans ces circonstancesAprès avoir (ré) installé le package d'outils, j'ai eu une erreur similaire sur un appareil Windows 10;
Solution Analogue à comme expliqué pour les systèmes linux: il suffit de créer le dossier pour pouvoir démarrer le
mongod.exe
(serveur mongoDB).J'ai pensé que je pourrais le laisser aux personnes qui se retrouvent ici avec les mêmes termes de recherche sur un appareil Windows.
la source
Je voulais juste souligner ici que si vous essayez cela et que vous rencontrez
mkdir: /data/db: Read-only file system
, veuillez voir ce commentaire, qui m'a aidé: https://stackoverflow.com/a/58895373 .De cette façon, si quelqu'un est sur cette réponse et contrôle F pour "lecture seule", il verra ceci
la source
Il existe un moyen vraiment stupide de créer ce problème, dont j'ai été le pionnier:
1) laissez votre mongo installé pendant un certain temps 2) revenez et le serveur ne fonctionne pas 3) essayez de le démarrer, mais n'utilisez pas sudo cette fois 4) mongo ne trouve pas les données / db / parce que maintenant il cherche dans le répertoire home de l'utilisateur au lieu du répertoire home
Oui, c'est vraiment stupide mais si ça fait un moment que vous n'êtes pas sur le système, cela peut vous faire trébucher.
Réponse courte: assurez-vous d'exécuter mongo avec le même répertoire personnel implicite
la source