Файлова система лише для читання під час спроби mkdir / data / db на Mac


114

Я намагаюся створити нову папку в головному каталозі

Перепробував усілякі приклади

sudo mkdir /data/db

sudo mkdir -p /data/db

Я продовжую отримувати

mkdir: / data: Файлова система лише для читання


1
stackoverflow.com/questions/58283257/… Це відповідає на коментарі нижче.
Камілла

Відповіді:


157

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

Я просто змінив каталог десь ще.

На даний момент використовую цю команду

mongod --dbpath=/Users/user/data/db

4
Чи є спосіб зробити це постійним? Я повинен вводити його щоразу, коли запускаю сервер MongoDB!
AV Paul

2
@AVPaul Можливо, не найкраще рішення, але ви можете створити псевдонім, який посилається на ваш шлях.
DjangoBlockchain

1
@JeffGoes Я припускаю, що ви не замінили користувача справжнім іменем.
Аман

2
@AlexL Це ​​працює і на мене. Але чи потрібно мені вводити mongod --dbpath = / Users / my_USER_name / data / db кожного разу, коли я хочу запустити свій dev mongo db? Тому що наступного разу, коли я запущу mongod, це говорить / data / db не знайдено
Shoeb Mirza

3
Ви можете зробити його постійним, встановивши dbPath у конфігураційному файлі mongoDB, якщо ви використовуєте mac, він знаходиться під /usr/local/etc/mongod.conf. потім додайте наступне: "storage: dbPath: шлях до вашого каталогу db"
Samoox

81

з офіційних документів https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

встановіть homebrew і запустіть наступні команди

sudo chown -R $(whoami) $(brew --prefix)/*

тоді

brew tap mongodb/brew

тоді

brew install mongodb-community@4.2

і

brew services start mongodb-community

або

mongod --config /usr/local/etc/mongod.conf

тоді

ps aux | grep -v grep | grep mongod

і

mongo

для перевірки ви можете запустити show dbsв оболонці mongo


brew services start mongodb-community => Помилка: Формула mongodb-communityне встановлена. Вам потрібно запустити: служби пивоваріння запускаються mongodb/brew/mongodb-community@4.2
Андресс Неунгуе,

20

З новим оновленням macOS Catalina папка /data/dbстає лише для читання, ви не можете її змінити. Дотримуйтесь цієї процедури, щоб створити БД в іншій папці:

  1. Змінити mongodкаталог:

    sudo mongod --dbpath /System/Volumes/Data/data/db

  2. Дайте йому псевдонім, щоб використовувати його як mongod:

    alias mongod="sudo mongod --dbpath /System/Volumes/Data/data/db"

  3. Просто введіть mongodсвій термінал, він повинен працювати.

Додатково => Якщо вам потрібно надати йому поточні права користувача, використовуйте цей рядок коду:

sudo chown -R $(whoami) /System/Volumes/Data/data/db

(Просто для інформації -> $(whoami)це просто змінна, яка повертає поточного користувача)


1
Я зробив це до кроку 1: sudo mkdir -p /System/Volumes/Data/data/db&& sudo chown -R `id -un` /System/Volumes/Data/data/db. Не впевнений, що ці папки вже існують, але поєднав відповідь @ xgqfrms з цією. Велике спасибі за це, зводило мене з розуму.
twknab

11

Зробити постійну зміну шляху до dbпапки mongod .

Після цих документів вони кажуть приблизно таке. Якщо mongod розпочато з сервісного обслуговування:

$ brew services start mongodb-community@4.2

Він буде використовувати конфігураційний файл на шляху /usr/local/etc/mongod.conf


Щоб виправити це, відредагуйте файл налаштування:

$ vim /usr/local/etc/mongod.conf

І змініть dbPatheg на домашній каталог, як це:

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /Users/<username>/data/db
net:
  bindIp: 127.0.0.1 

Збережіть файл і перезапустіть mongod за допомогою brew:

$ brew services restart mongodb-community@4.2

1
у мене це не вийшло, mongo все ще шукає / data / db
Xen_mar

@Xen_mar ти намагався запустити mongod після редагування файлу? Мабуть mongod вже керують варива послуг запуску
JEC

5

Так, з macOS Каталіна Apple створила новий том для цілей безпеки. Якщо ви використовуєте macOS Catalina, вам потрібно створити /data/dbпапку в System/Volumes/Data.

Дотримуйтесь цих команд

  1. sudo mkdir -p /System/Volumes/Data/data/db
  2. sudo chown -R id -un /System/Volumes/Data/data/db

Запустіть MongoDB

  1. brew services run mongodb-community

  2. Насолоджуйтесь 😉


4

Ви більше не можете створити папку в кореневому каталозі на Mac Catalina!

https://www.apple.com/macos/catalina/features/

Виділений системний обсяг

macOS Catalina працює у виділеному, доступному лише для читання системному томі - це означає, що він повністю відокремлений від усіх інших даних і допомагає підвищити надійність macOS.

# macOS Catalina, mkdir path
$ sudo mkdir -p /System/Volumes/Data/data/db

# give permissions
$ sudo chown -R `id -un` /System/Volumes/Data/data/db

# macOS 10.14.x -
$ sudo mkdir -p /data/db

# macOS 10.15.x +
$ sudo mkdir -p /System/Volumes/Data/data/db

посилання

https://discussions.apple.com/thread/250720711

https://zellwk.com/blog/install-mongodb/

https://www.youtube.com/watch?v=DX15WbKidXY


3

Це працювало у мене, коли я проходив курс Udemy: 1. Встановіть HomeBrew, ввівши це у свій термінал

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. Перемістіть свою стару папку / data / db (якщо ви хочете зробити резервну копію поточної бази даних) у не кореневу папку та перейдіть до наступного кроку

  2. Запуск в терміналі а) brew uninstall mongodb б) За потреби пробіг brew uninstall --force mongodb в) brew tap mongodb/brew г) brew install mongodb-community д)brew services start mongodb/brew/mongodb-community

  3. Все, що вам зараз потрібно, це запустити mongo в Терміналі, і ви побачите символ оболонки mongo>.

Будь ласка, дайте мені знати, якщо це працює;) На це мені зайняли майже 2 години, виходячи з цієї статті: /apple/362883/mongodb-doesnt-work-after-update-to -macos-catalina-10-15

Вітаю, Раду


3

Якщо ви перебуваєте на mac і стикаєтесь із проблемою, тоді корисна команда нижче, whoamiзмінна отримає поточного користувача

mongod --dbpath=/Users/$(whoami)/data/db

3

Шляхи за замовчуванням для формули спільноти mongodb

На додаток до встановлення сервера MongoDB та бінарних файлів інструментів, формула mongodb-community створює:

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

тоді це спрацювало для мене:

mkdir -p usr/local/var/mongodb/data/db

2

Ви не можете створити /data/каталог. Це зарезервовано для файлової системи APFS. Відвідайте блог Бомбіча щодо цього питання.


Тож, чи можна вирішити цю проблему лише для читання? У мене така сама проблема
Зайнаб

2
Ні, вам потрібно використовувати інше ім’я для вашого каталогу. Можливим рішенням може бути створення каталогу даних всередині іншого каталогу, який дозволено в якості кореневого каталогу.
jvarela

2

Я зробив це:

mkdir -p usr/local/var/mongodb/data/db

оскільки новий шлях "usr / local / var / mongodb".


2

Я втрачаю, чому Apple це зробила. Тож тепер у нас не може бути жодного каталогу кореневого рівня, крім їхнього? Це просто не має ніякого сенсу, і люди, які створюють із правами root, ці папки знають, що вони роблять


1

За допомогою macOS Catalina ви більше не можете зберігати файли або дані в системному томі, доступному лише для читання, а також не можете писати в "кореневий" каталог (/) із командного рядка, наприклад, за допомогою терміналу.


1

Щоб додати те, що Девід Бак писав тут , спочатку вам потрібно створити каталог. Ви можете зробити це за допомогою:

sudo mkdir / System / Volumes / Data / data / db

Якщо ви отримуєте цю помилку:

"Помилка синтаксичного аналізу командного рядка: нерозпізнаний параметр '--dbpath / System / Volumes / Data / data / db' try 'mongod --help' для отримання додаткової інформації"

після створення псевдоніма це просто тому, що Девід Бак (роблячи справді корисний коментар) пропустив пробіл у своїй відповіді.

Щоб це виправити, введіть

unalias mongod

а потім введіть

псевдонім mongod = "sudo mongod --dbpath / System / Volumes / Data / data / db"


Це був не я ... заслуга повинна бути у Ежена Беляєва. Я щойно відредагував їхню відповідь для форматування ...
Девід Бак,

0

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

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

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

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


0

Я створюю суть з простими кроками, щоб встановити та запустити mongodb на catalina

# install homebrew (https://brew.sh/) and run the following commands
sudo chown -R $(whoami) $(brew --prefix)/*
brew tap mongodb/brew
brew install mongodb-community@4.2

## --- aliases to set in your zshrc file

# open your zshrc file
open ~/.zshrc
# copy and paste shorcuts in the end of the file
alias mongod='brew services run mongodb-community'
alias mongod-start='brew services start mongodb-community' #will start MongoDB automatically when you login into your Macbook
alias mongod-status='brew services list'
alias mongod-stop='brew services stop mongodb-community'

# restart your terminal
# type mongod in your terminal for run service & mongod-stop for finish it
# test your mongodb connection with
mongo
show dbs

https://gist.github.com/sturmenta/cf19baa91b1d79d8ae2b305fb7e1f799

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.