MongoDB non riesce a trovare la directory dei dati dopo l'aggiornamento a Mac OS 10.15 (Catalina)


61

Oggi ho aggiornato a MacOS 10.15 (Catalina). Quando corro mongodnel terminale non riesce a trovare la /data/dbdirectory:

  /Users/william > mongod
2019-10-08T17:02:44.183+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] MongoDB starting : 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] db version v4.0.3
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] allocator: system
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] modules: none
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] build environment:
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 in initAndListen: NonExistentPath: Data directory /data/db not found., terminating
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] now exiting
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] shutting down with code:100
  /Users/william > 

Ho provato a installare MongoDB con brew:

brew install mongodb

  /Users/william > brew install mongodb
Updating Homebrew...
Error: mongodb: unknown version :mountain_lion

Qualsiasi aiuto?

Risposte:


91

Questo è l'errore principale:

eccezione in initAndListen: NonExistentPath: directory dati / dati / db non trovata., terminata

Catalina ha un cambiamento a sorpresa: non consentirà modifiche alla directory principale (questo è stato discusso anche in un thread del forum ):

% sudo mkdir -p /data/db
mkdir: /data/db: Read-only file system

Sfortunatamente, questo non è esplicitamente spiegato nelle note di rilascio di Catalina di Apple , a parte una breve menzione delle funzionalità di Catalina :

macOS Catalina funziona in un volume di sistema dedicato e di sola lettura

Poiché la directory /data/dbè codificata come impostazione predefinita MongoDB, una soluzione alternativa consiste nello specificare un diverso dbpathche non si trova nella directory principale. Per esempio:

mongod --dbpath ~/data/db

Ciò inserirà i dati di MongoDB nella tua home directory. Assicurati solo che il percorso ~/data/dbesista effettivamente.

Metodo alternativo

Un metodo alternativo è seguire le istruzioni su Installa MongoDB Community Edition su macOS sfruttando brew:

brew tap mongodb/brew
brew install mongodb-community

Questo creerà alcuni file aggiuntivi per impostazione predefinita:

  • il file di configurazione (/usr/local/etc/mongod.conf)
  • il percorso della directory di registro (/ usr / local / var / log / mongodb)
  • il percorso della directory dei dati (/ usr / local / var / mongodb)

Per eseguire mongodpuoi:

  • Esegui il comando manualmente dalla riga di comando (questo può essere modificato per comodità):

    mongod --config /usr/local/etc/mongod.conf
  • Esegui MongoDB come servizio utilizzando brew services. Si noti che questo eseguirà MongoDB come nodo autonomo (non un set di repliche), quindi le funzionalità che dipendono dall'oplog, ad esempio changestreams, non funzioneranno se non si modifica il mongodfile di configurazione:

    brew services start mongodb-community

Grazie per la risposta, qualche metodo per configurare dbpath in bash_profile? così, non è necessario eseguire mongod con il percorso db ogni volta.
Madhavan Sundararaj,

Immagino che, dopo l'aggiornamento, il sistema operativo abbia eliminato la cartella / data / db presente in mongodb
Madhavan Sundararaj,

1
@MadhavanSundararaj se vuoi correre mongodb --dbpath ...semplicemente digitando mongodbash, puoi usare un alias simile alias mongod='mongod --dbpath ...'e metterlo nel tuo bashrc. Non è la soluzione più pulita ma potrebbe funzionare per i tuoi scopi.
kevinadi

macOS non usa l'ultimo zsh? in tal caso, usa ancora .bashrc. Perché l'alias suggerito sopra non ha funzionato come previsto
Madhavan Sundararaj,

1
@MadhavanSundararaj per zsho qualsiasi altra shell, devi mettere l'alias nel file rc di quella shell. Perché zshlo è ~/.zshrc. Assicurati di seguire anche la sintassi della shell anche sulla creazione di alias.
Kevinev

61

Dopo aver installato Catalina, potresti avere una cartella sul desktop chiamata Relocated Items. Puoi trovare la data/dbcartella all'interno della Securitycartella.

Tutto quello che dovevo fare era spostare Security/data/db, in particolare, data/dbe inserirlo nella mia cartella home.

Puoi farlo con l'app Finder o con il terminale eseguendo il comando seguente:

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

Dopo quella corsa: mongod --dbpath ~/data/db

Sta a te creare l'alias prima


6
Sono quasi impazzito che l'aggiornamento di Catalina avrebbe potuto cancellare tutti i miei dati. Grazie per avermi salvato dalla follia!
Adam Bubela,

1
Grazie @MarnixHarderwijk, funziona per me.
Zeeyed,

2
La ringrazio molto è stato salvato il mio giorno, funziona su MacOS Catalina
AFR

Quando eseguo il comando mongod ottengo: "mongod" non può essere aperto perché lo sviluppatore non può essere verificato.
Raz,


7

Kevinadi ha già reso giustizia alla domanda, tuttavia è così che ho risolto il problema:

Dopo aver installato mongodb-community

  1. sudo mkdir -p /System/Volumes/Data/data/db (Crea la cartella data / db)
  2. sudo chown -Rid -un /System/Volumes/Data/data/db(Concedi autorizzazioni)
  3. mongod --dbpath=/System/Volumes/Data/data/db (Cambia dbpath di mongodb)
  4. mongod (Funziona bene)

Ho trovato questo articolo sull'installazione di mongodb molto utile


Ciò ha aiutato dopo 1 giorno di tentare di risolvere il problema! L'articolo non menziona la modifica di dbpath ed è quello che mi mancava
mhlavacka,


1

Ecco cosa ha funzionato per me:

  1. Crea una cartella da qualche parte, ad es. Sviluppo / mongodb / data / db
  2. Aprire il file mongod.conf e aggiornare il valore storage.dbPath nel percorso della cartella appena creato

1
dove si trova il file mongod.conf ??
ValRob,

2
È il file predefinito. Vai a questo link: docs.mongodb.com/manual/reference/configuration-options e quindi su "File di configurazione"
rolu


0

Versione Mac Catalina ha reso la cartella principale non più scrivibile.

Brew ha una versione aggiornata di mongodb per usare un nuovo percorso (che si crea da solo) /usr/local/var/mongodbe seguire queste istruzioni risolverà il problema:

Guida all'installazione di mongodb-community-edition aggiornata

brew install mongodb-community@VERSION dove la prima VERSIONE con la correzione è 4.2


Il comando sopra dovrebbe essere eseguito con sudo. Quindi la configurazione di dbPath sarà rispettata. Altrimenti, il mongo continua a essere impostato su /data/dbindipendentemente dalla configurazione.
Matt Hagemann,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.