MongoDB не може знайти каталог даних після оновлення до Mac OS 10.15 (Каталіна)


61

Я оновив сьогодні до MacOS 10.15 (Каталіна). Коли я запускаю mongodв терміналі, він не може знайти /data/dbкаталог:

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

Я спробував встановити MongoDB за допомогою brew :

brew install mongodb

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

Будь-яка допомога?

Відповіді:


91

Це основна помилка:

виняток у initAndListen: NonExistentPath: каталог даних / data / db не знайдено., завершується

У Каталіни є несподівана зміна: вона не дозволить змінити кореневий каталог (про це йшлося в темі форуму ):

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

На жаль, це не чітко прописано в нотах випуску Apple Catalina , крім короткої згадки в особливостях Каталіна :

macOS Catalina працює у виділеному системному томі, призначеному лише для читання

Оскільки каталог /data/dbзашифрований як MongoDB за замовчуванням, вирішення полягає у тому, щоб вказати інше, dbpathяке не знаходиться в кореневій директорії. Наприклад:

mongod --dbpath ~/data/db

Це дозволить розмістити дані MongoDB у вашому домашньому каталозі. Просто переконайтеся, що шлях ~/data/dbнасправді існує.

Альтернативний метод

Альтернативним методом є дотримання вказівок Інсталювати MongoDB Community Edition на macOS шляхом використання brew:

brew tap mongodb/brew
brew install mongodb-community

Це створить додаткові файли за замовчуванням:

  • файл конфігурації (/usr/local/etc/mongod.conf)
  • шлях до каталогу журналів (/ usr / local / var / log / mongodb)
  • шлях до каталогу даних (/ usr / local / var / mongodb)

Для запуску mongodви можете:

  • Запустіть команду вручну з командного рядка (це можна зручно для зручності):

    mongod --config /usr/local/etc/mongod.conf
  • Запустіть MongoDB як службу, використовуючи brew services. Зауважте, що це буде запускати MongoDB як окремий вузол (не набір реплік), тому функції, що залежать від оплогу, наприклад, зміни потоків не працюватимуть, якщо ви не зміните mongodфайл конфігурації:

    brew services start mongodb-community

Дякую за відповідь, будь-які методи налаштування dbpath у bash_profile? так що, не потрібно щоразу виконувати mongod з db-доріжкою.
Мадхаван Сундарарай

Я думаю, після оновлення операційної системи видалена / дані / дб папки , яка була присутня при MongoDB
Madhavan Sundararaj

1
@MadhavanSundararaj, якщо ви хочете запустити mongodb --dbpath ..., просто набравши mongodbash, ви можете використовувати псевдонім на зразок alias mongod='mongod --dbpath ...'і поставити цей псевдонім у свій bashrc. Це не найчистіше рішення, але воно може працювати для ваших цілей.
kevinadi

чи не остання версія macOS використовує zsh? якщо так, чи все-таки використовується .bashrc. Оскільки вищезгаданий псевдонім не спрацював так, як очікувалося
Мадхаван Сундарарай

1
@MadhavanSundararaj для zshбудь-якої іншої оболонки, вам потрібно покласти псевдонім під rc-файл цієї оболонки. Бо zshце ~/.zshrc. Переконайтесь, що ви також дотримуєтесь синтаксису оболонки і при створенні псевдонімів.
кевінаді

61

Після встановлення Catalina у вас може з’явитися папка на робочому столі під назвою Relocated Items. Ви можете знайти data/dbпапку всередині Securityпапки.

Все, що я повинен був зробити, це перенести Security/data/dbконкретно data/dbі помістити його всередину моєї домашньої папки.

Це можна зробити за допомогою програми Finder або з терміналом, виконавши таку команду:

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

Після цього запустіть: mongod --dbpath ~/data/db

Вам належить створити псевдонім раніше


6
Я ледь не збожеволів, що оновлення Каталіни могло б стерти всі мої дані. Дякуємо, що врятували мене від божевілля!
Адам Бубела

1
Дякую @MarnixHarderwijk, він працює для мене.
Zeeyed

2
Велике спасибі Ви врятували мій день, працює на MacOS Каталіна
AFR

Коли я запускаю команду mongod, я отримую: "mongod" не можна відкрити, оскільки розробник не може бути перевірений.
Raz

@Raz: Я думаю, це пов’язано з apple.stackexchange.com/questions/362883/…
Marnix Harderwijk

7

Кевінаді вже вирішив це питання, проте ось як я вирішив проблему:

Після встановлення mongodb-спільноти

  1. sudo mkdir -p /System/Volumes/Data/data/db (Створіть папку data / db)
  2. sudo chown -Rid -un /System/Volumes/Data/data/db(Надати дозволи)
  3. mongod --dbpath=/System/Volumes/Data/data/db (Змінити dbpath mongodb)
  4. mongod (Добре працює)

Я вважаю цю статтю про встановлення mongodb дуже корисною


Це допомогло після 1 дня спроб виправити проблему! У статті не згадується зміна dbpath, і саме цього я пропав
mhlavacka

1

знайшов хитрість ... видаліть всю папку ~ / data / db з каталогу, потім відтворіть нову, але НЕ ВИКОРИСТОВУЙТЕ натомість mkdir -p / data / db, просто використовуйте свій трекпад, щоб це використовувати системний спосіб створення папки

це працювало для мене


Він не працює :-(
пн

1

Ось що для мене спрацювало:

  1. Створіть десь папку, наприклад, Development / mongodb / data / db
  2. Відкрийте файл mongod.conf і оновіть значення storage.dbPath до новоствореного шляху до папки

1
де файл mongod.conf ??
ValRob

2
Це файл за замовчуванням. Перейдіть за цим посиланням: docs.mongodb.com/manual/reference/configuration-options, а потім на "файл конфігурації"
rolu


0

Версія Mac Catalina зробила кореневу папку більше не доступною для запису.

У Brew є оновлена ​​версія mongodb, щоб використовувати новий шлях (який він створює сам), /usr/local/var/mongodbі дотримуючись цих інструкцій, виправите проблему:

Посібник із встановлення оновленого mongodb-спільноти-видання

brew install mongodb-community@VERSION де перша ВЕРСІЯ з виправленням - 4.2


Вищевказана команда повинна виконуватися за допомогою sudo. Тоді конфігурація dbPath буде дотримана. Інакше монго все ще за замовчуванням /data/dbнезалежно від конфігурації.
Метт Хагеман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.