83 votes

MongoDB ne peut pas trouver le répertoire de données après la mise à niveau vers Mac OS 10.15 (Catalina)

J'ai mis à jour vers MacOS 10.15 (Catalina) aujourd'hui. Lorsque j'exécute mongod dans le terminal, il ne peut pas trouver le répertoire /data/db :

  /Users/william > mongod
2019-10-08T17:02:44.183+0800 I CONTROL  [main] Désactivation automatique de TLS 1.0, pour forcer l'activation de TLS 1.0, spécifiez --sslDisabledProtocols 'none'
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] Démarrage de MongoDB : pid=43162 port=27017 dbpath=/data/db 64-bit host=Williams-MacBook-Pro-6.local
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] version de la db v4.0.3
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] version git : 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] allocateur : système
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] modules: aucun
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] environnement de compilation :
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     distarch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] options: {}
2019-10-08T17:02:44.211+0800 I STORAGE  [initandlisten] exception dans initAndListen: NonExistentPath: Répertoire de données /data/db introuvable, arrêt
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] arrêt: fermeture de l'écoute des sockets...
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] suppression du fichier de socket : /tmp/mongodb-27017.sock
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] sortie maintenant
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] arrêt avec code :100
  /Users/william > 

J'ai essayé d'installer MongoDB avec brew :

brew install mongodb

  /Users/william > brew install mongodb
Mise à jour de Homebrew...
Erreur: mongodb: version inconnue :mountain_lion

Un conseil ?

137voto

Kevin Adistambha Points 3886

C'est l'erreur principale :

exception dans initAndListen: NonExistentPath: Répertoire de données /data/db introuvable, arrêt

Catalina a une surprise : elle n'autorisera pas les changements dans le répertoire racine (cela a été discuté dans un thread du forum également) :

% sudo mkdir -p /data/db
mkdir: /data/db: Système de fichiers en lecture seule

Malheureusement, cela n'est pas explicitement indiqué dans les notes de version de Catalina d'Apple, sauf une brève mention dans les fonctionnalités de Catalina :

macOS Catalina s'exécute dans un volume système dédié et en lecture seule

Étant donné que le répertoire /data/db est codé comme défaut de MongoDB, une solution de contournement consiste à spécifier un dbpath différent qui n'est pas situé dans le répertoire racine. Par exemple :

mongod --dbpath ~/data/db

Cela placera les données de MongoDB dans votre répertoire personnel. Assurez-vous simplement que le chemin ~/data/db existe réellement.

Méthode alternative

Une méthode alternative consiste à suivre les instructions sur Installer la version communautaire de MongoDB sur macOS en utilisant brew :

brew tap mongodb/brew
brew install mongodb-community

Cela créera par défaut quelques fichiers supplémentaires :

  • le fichier de configuration (/usr/local/etc/mongod.conf)
  • le chemin du répertoire de journaux (/usr/local/var/log/mongodb)
  • le chemin du répertoire de données (/usr/local/var/mongodb)

Pour exécuter mongod, vous pouvez soit :

  • Exécuter la commande manuellement depuis la ligne de commande (cela peut être aliéné pour plus de commodité) :

    mongod --config /usr/local/etc/mongod.conf
  • Exécuter MongoDB en tant que service en utilisant brew services. Notez que cela exécutera MongoDB en tant que nœud autonome (pas un ensemble de répliques), donc les fonctionnalités qui dépendent de l'oplog, par exemple les flux de changement, ne fonctionneront pas à moins que vous ne modifiez le fichier de configuration mongod :

    brew services start mongodb-community

84voto

Marnix Harderwijk Points 317

Après avoir installé Catalina, vous pourriez avoir un dossier sur votre bureau appelé Relocated Items. Vous pouvez trouver le dossier data/db à l'intérieur du dossier Security.

Je n'avais qu'à déplacer le Security/data/db, spécifiquement data/db et le placer à l'intérieur de mon dossier personnel.

Vous pouvez le faire avec l'application Finder ou avec le terminal en exécutant la commande suivante :

sudo mv /Users/Shared/Relocated\ Items/Security/data ~/

Ensuite, exécutez : mongod --dbpath ~/data/db

C'est à vous de créer l'alias

15voto

Tolumide Points 678

Kevinadi a déjà répondu à la question de manière satisfaisante, cependant voici comment j'ai résolu le problème :

Après avoir installé mongodb-community

  1. sudo mkdir -p /System/Volumes/Data/data/db (Créez le dossier data/db)
  2. sudo chown -Rid -un/System/Volumes/Data/data/db (Donnez les autorisations)
  3. mongod --dbpath=/System/Volumes/Data/data/db (Changez le chemin de bd de mongodb)
  4. mongod (Fonctionne bien)

J'ai trouvé cet article sur l'installation de mongodb très utile

1voto

rolu Points 151

Voici ce qui a fonctionné pour moi :

  1. Créez un dossier quelque part par exemple Development/mongodb/data/db
  2. Ouvrez le fichier mongod.conf et mettez à jour la valeur de storage.dbPath avec le chemin du nouveau dossier créé

1voto

Alonad Points 188

J'ai rencontré le même problème avec BigSur et malheureusement, le dossier "Relocated Items" ne contenait rien ressemblant à mon dump MongoDB. J'ai décidé de chercher dans le Finder par nom de base de données, car le dump contient des dossiers avec des noms de base de données. Et mon dump s'est avéré être ici

Macintosh HD/Système/Volumes/Macintosh HD/data/db

D'après ce que j'ai compris, le dump avait été déplacé en douce pendant la mise à jour du système d'exploitation car il était situé à la racine et maintenant le système d'exploitation ne donne pas la permission d'écrire à la racine.

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