MongoDB tidak dapat menemukan direktori data setelah memutakhirkan ke Mac OS 10.15 (Catalina)


61

Saya memperbarui ke MacOS 10.15 (Catalina) hari ini. Ketika saya berjalan mongoddi terminal itu tidak dapat menemukan /data/dbdirektori:

  /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 > 

Saya mencoba menginstal MongoDB dengan brew:

brew install mongodb

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

Ada bantuan?

Jawaban:


91

Ini adalah kesalahan utama:

pengecualian di initAndListen: NonExistentPath: Direktori data / data / db tidak ditemukan., terminating

Catalina memiliki perubahan mengejutkan: itu tidak akan mengizinkan perubahan ke direktori root (ini juga dibahas di utas forum ):

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

Sayangnya, ini tidak dijabarkan secara eksplisit dalam catatan rilis Catalina Apple , selain penyebutan singkat dalam fitur Catalina :

macOS Catalina berjalan dalam volume sistem khusus yang hanya baca

Karena direktori /data/dbdikodekan sebagai MongoDB default, solusinya adalah menentukan yang berbeda dbpathyang tidak terletak di direktori root. Sebagai contoh:

mongod --dbpath ~/data/db

Ini akan menempatkan data MongoDB di direktori home Anda. Pastikan saja jalurnya ~/data/dbbenar-benar ada.

Metode alternatif

Metode alternatif adalah mengikuti petunjuk di Install MongoDB Community Edition di macOS dengan memanfaatkan brew:

brew tap mongodb/brew
brew install mongodb-community

Ini akan membuat beberapa file tambahan secara default:

  • file konfigurasi (/usr/local/etc/mongod.conf)
  • jalur direktori log (/ usr / local / var / log / mongodb)
  • jalur direktori data (/ usr / local / var / mongodb)

Untuk menjalankan mongodAnda dapat:

  • Jalankan perintah secara manual dari baris perintah (ini dapat disingkat untuk kenyamanan):

    mongod --config /usr/local/etc/mongod.conf
  • Jalankan MongoDB sebagai layanan menggunakan brew services. Perhatikan bahwa ini akan menjalankan MongoDB sebagai node mandiri (bukan set replika), sehingga fitur yang tergantung pada oplog misalnya changestreams tidak akan berfungsi kecuali jika Anda memodifikasi mongodfile konfigurasi:

    brew services start mongodb-community

Terima kasih atas jawabannya, ada metode untuk mengkonfigurasi dbpath di bash_profile? sehingga, tidak perlu menjalankan mongod dengan jalur db setiap saat.
Madhavan Sundararaj

Saya kira, setelah pembaruan, OS menghapus / data / folder db yang hadir di bawah mongodb
Madhavan Sundararaj

1
@MadhavanSundararaj jika Anda ingin menjalankan mongodb --dbpath ...hanya dengan mengetikkan mongodbash, Anda dapat menggunakan alias seperti alias mongod='mongod --dbpath ...'dan memasukkan alias itu ke dalam bashrc. Ini bukan solusi terbersih tetapi mungkin berhasil untuk tujuan Anda.
kevinadi

bukankah macOS terbaru menggunakan zsh? jika demikian, apakah masih menggunakan .bashrc. Karena yang disarankan di atas alias tidak berfungsi seperti yang diharapkan
Madhavan Sundararaj

1
@MadhavanSundararaj untuk zshatau shell lain, Anda harus meletakkan alias di bawah file rc shell itu. Untuk zshitu ~/.zshrc. Pastikan Anda juga mengikuti sintaks shell untuk membuat alias juga.
kevinadi

61

Setelah menginstal Catalina, Anda mungkin memiliki folder di Desktop yang disebut Relocated Items. Anda dapat menemukan data/dbfolder di dalam Securityfolder tersebut.

Yang harus saya lakukan adalah memindahkan Security/data/db, khususnya data/dbdan meletakkannya di dalam folder rumah saya.

Anda dapat melakukan ini dengan aplikasi Finder atau dengan terminal dengan menjalankan perintah berikut:

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

Setelah menjalankan itu: mongod --dbpath ~/data/db

Terserah Anda untuk membuat alias sebelumnya


6
Saya hampir menjadi gila karena peningkatan Catalina bisa menghapus semua data saya. Terima kasih telah menyelamatkan saya dari kegilaan!
Adam Bubela

1
Terima kasih @MarnixHarderwijk, ini bekerja untuk saya.
Zeeyed

2
Terima kasih banyak Anda telah menyelamatkan hari saya, bekerja di MacOS Catalina
afr

Ketika saya menjalankan perintah mongod saya mendapatkan: "mongod" tidak dapat dibuka karena pengembang tidak dapat diverifikasi.
Raz


7

Kevinadi sudah melakukan keadilan untuk pertanyaan itu, namun inilah cara saya menyelesaikan masalah:

Setelah menginstal komunitas mongodb

  1. sudo mkdir -p /System/Volumes/Data/data/db (Buat folder data / db)
  2. sudo chown -Rid -un /System/Volumes/Data/data/db(Berikan izin)
  3. mongod --dbpath=/System/Volumes/Data/data/db (Ubah dbpath dari mongodb)
  4. mongod (Berjalan baik)

Saya menemukan artikel ini tentang menginstal mongodb sangat berguna


Ini membantu setelah 1 hari mencoba untuk memperbaiki masalah! Artikel itu tidak menyebutkan perubahan dbpath dan itulah yang saya lewatkan
mhlavacka




0

Versi Mac Catalina membuat folder root tidak lagi dapat ditulis.

Brew memiliki versi mongodb yang diperbarui untuk menggunakan jalur baru (yang dibuat sendiri), /usr/local/var/mongodbdan mengikuti instruksi ini akan memperbaiki masalah:

Panduan untuk menginstal edisi mongodb-komunitas yang diperbarui

brew install mongodb-community@VERSION di mana VERSI pertama dengan perbaikan adalah 4.2


Perintah di atas harus dijalankan dengan sudo. Kemudian konfigurasi dbPath akan dihormati. Kalau tidak, mongo masih default untuk /data/dbterlepas dari konfigurasi.
Matt Hagemann
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.