J’utilise mon nouveau mac pour la première fois aujourd’hui. Je suis le guide de démarrage sur le site mongodb.org jusqu’à l’étape où l’on crée le répertoire / data / db. En passant, j’ai utilisé la route homebrew.
Donc, j’ouvre un terminal, et je pense que je suis à ce que vous avez appelé le répertoire de base, car lorsque je fais “ls”, je vois des dossiers de Desktop Application Movies Music Images Documents et de la bibliothèque.
Donc j’ai fait un
mkdir -p /data/db
Tout d’abord, la permission est refusée. J’ai continué à essayer différentes choses pendant une demi-heure et enfin:
mkdir -p data/db
travaillé. et quand je “ls”, il existe un répertoire de données et un répertoire nested db.
alors 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 de firebase database. dans le répertoire de la firebase database cependant, il n’y a absolument rien 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
EDITER Obtenir un message d’erreur pour
sudo chown mongod:mongod /data/db chown: mongod: Invalid argument
Merci tout le monde!
Vous avez créé le répertoire au mauvais endroit
/ data / db signifie qu’il se trouve directement dans le répertoire racine ‘/’, alors que vous avez créé ‘data / db’ (sans le premier /) sans doute dans un autre répertoire, comme le répertoire principal ‘/ 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 dans un autre emplacement, mais ce n’est généralement pas une bonne idée, car cela complique légèrement la récupération de firebase database, car vous devez toujours spécifier le chemin d’access à la firebase database manuellement. Je ne recommanderais pas de le faire.
Modifier:
Le message d’erreur que vous obtenez est “Impossible de créer / ouvrir le fichier de locking: /data/db/mongod.lock errno: 13 Autorisation refusée” . Le répertoire que vous avez créé ne semble pas avoir les permissions et la propriété appropriées: il doit être accessible en écriture pour l’utilisateur qui exécute le processus MongoDB.
Pour voir les permissions et la propriété du répertoire ‘/ data / db /’, procédez comme suit: (voici à quoi doivent ressembler les permissions 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 permissions pour l’utilisateur, le groupe et les autres. ‘mongod mongod’ montre à 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 permissions et la propriété ci-dessus, procédez comme suit :
Vérifiez d’abord quel utilisateur et groupe votre utilisateur mongo a:
# 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
cela 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 possède 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 mots de passe ci-dessus.
Cochez ici pour mieux comprendre la signification des permissions de répertoire:
http://www.perlfect.com/articles/chmod.shtml
Peut-être aussi consulter l’un des tutoriels que vous pouvez trouver via Google: “UNIX pour les débutants”
Après avoir reçu la même erreur que Nik
chown: id -u: argument invalide
J’ai découvert que cela venait apparemment du mauvais type de guillemets (aurait dû être des backquotes ) Forums Ubuntu
Au lieu de cela je viens d’utiliser
sudo chown $ USER / data / db
comme alternative et maintenant mongod a les permissions dont elle a besoin.
Cela fonctionne pour moi, trouvé dans les commentaires:
sudo chown -R $USER /data/db
Créez le dossier.
sudo mkdir -p /data/db/
Donnez-vous la permission au dossier.
sudo chown `id -u` /data/db
Ensuite, vous pouvez lancer mongod
sans sudo
. Fonctionne sur OSX Yosemite
Pour corriger cette erreur sous OS X, j’ai redémarré et arrêté le service: $ brew services restart mongodb $ brew services stop mongodb
Ensuite, j’ai lancé mongod --config /usr/local/etc/mongod.conf
, et le problème a disparu.
L’erreur a semblé se produire après la mise à niveau du paquet mongodb homebrew.
Installation via brew sous Mac où YOUR_USER_NAME et le staff sont le groupe
sudo mkdir -p /data/db sudo chmod +x+r+w /data/db/ sudo touch /data/db/mongod.lock sudo chown YOUR_USER_NAME:staff /data/db sudo chmod +x+r+w /data/db/mongod.lock sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock
Si vous exécutez mongo sans arguments, vous supposez que vous utilisez la machine de production pour utiliser les emplacements par défaut.
pour utiliser votre propre firebase database (dev ou juste une autre):
./bin/mongod --dbpath ~/data/db
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, je devais utiliser sudo.
Je suis juste allé au répertoire racine en utilisant le Finder et j’ai créé un nouveau dossier en utilisant «Nouveau dossier». Totalement travaillé pour moi.
Note: J’utilise OSX.
Votre commande aura créé la structure de répertoires dans le dossier en cours, et non le répertoire racine de votre ordinateur (ce qui fait défaut /
est).
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 avec sudo
, qui est l’abréviation de “superutilisateur do”. On vous demandera alors votre mot de passe.
Donc, la commande complète serait:
$ sudo mkdir -p /data/db
Vous devez créer / data / db … c’est-à-dire un répertoire appelé / data / dans votre racine (ie / ) et un sous-dossier appelé / db / …
Vous obtenez des erreurs de permission parce que vous devez utiliser sudo pour créer une direcotry dans votre répertoire racine dans MacOS, sudo vous permet d’exécuter des commandes en tant qu’administrateur.
Alors, lancez ceci à la place …
$ sudo mkdir -p /data/db
Cela vous demandera un mot de passe, c’est le même mot de passe que vous utilisez pour changer les parameters du système (cette petite boîte de dialog qui s’ouvre lorsque vous essayez de modifier les préférences système pour ecample) et probablement identique à celle utilisée pour vous connecter.
J’ai eu ce problème avec une configuration existante de Mongodb. 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. Comme il n’a pas pu trouver le fichier de configuration, il a essayé de trouver les fichiers de la firebase database 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 permissions sur le fichier de configuration et que le processus mongod avec l’indicateur –config est exécuté comme suit:
mongod --config /etc/mongod.conf
Dans le fichier de configuration lui-même, j’avais ce paramètre:
storage: dbPath: /var/lib/mongodb
Et c’est ainsi que le processus pourrait retrouver le vrai dossier de firebase database.
Vous essayez de créer un répertoire auquel vous n’avez pas access root.
Pour tester mongodb, j’utilise juste un répertoire de mon répertoire utilisateur comme:
cd mkdir -p temp/ mongod --dbpath .
Cela fera une firebase database mongo dans temp / de votre répertoire de travail actuel
Juste un petit mot:
Si vous avez essayé d’exécuter mongod sans modifier d’abord les permissions, vous aurez probablement un fichier mongod.lock (et d’autres fichiers) dans le répertoire / data / db. Même après avoir modifié les permissions pour que le répertoire / data / db donne access à votre $ USER, vous continuerez à obtenir le “Impossible de créer / ouvrir le fichier de locking: /data/db/mongod.lock errno: 13 Autorisation refusée ” Erreur. Exécutez ls -al / data / db et vous verrez probablement que les permissions pour les fichiers individuels sont toujours définies sur root pour l’utilisateur et non sur votre utilisateur $ USER. Vous devez supprimer le fichier mongod.lock et les autres aussi. Ensuite, lorsque vous exécutez à nouveau mongod, tout devrait fonctionner et vous pouvez vérifier que les permissions de fichiers correspondent aux permissions de répertoire en exécutant à nouveau ls -al.
J’ai fait
brew install mongodb
sur 2018-02-01 et qui m’a donné la version 3.6.2 de mongodb.
Invité par la réponse de orluke ci-dessus, j’ai essayé juste
$ brew services restart mongodb
et tout est entré dans la vie. Mon appel mongoose.createConnection()
fait ce que je voulais. L’ interface graphique MongoDB Compass , la version communautaire, se connecterait. J’ai utilisé Compass pour regarder la collection local.startup_log
. Cela avait un document dans, le journal de moi juste commencer le service mongoDB, et qui avait
cmdLine:Object config:"/usr/local/etc/mongod.conf"
et effectivement il y avait un tel dossier:
$ more /usr/local/etc/mongod.conf systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1
et il y avait un /usr/local/var/mongodb
avec beaucoup de fichiers obscurs. Donc, cela semble être la façon dont l’installation fonctionne maintenant.
Je ne sais pas si le brew services restart
définit le service à exécuter lors de la connexion. Donc j’ai fait
brew services stop mongodb brew services start mongodb
et espère que le redémarre 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
brew services start mongodb
et qui devrait démarrer le service et le redémarrer après le redémarrage.
Tapez “id” sur le terminal pour voir les identifiants disponibles, puis tapez simplement
“sudo chown -R idname / data / db”
Cela a fonctionné pour moi! J’espère que cela résout votre problème.
Dans les versions plus actuelles de MongoDB, j’ai 3.2.10, il est stocké par défaut dans
/var/lib/mongodb