Файловая система только для чтения при попытке mkdir / data / db на Mac


105

Я пытаюсь создать новую папку в основном каталоге

Пробовал всевозможные примеры

sudo mkdir /data/db

sudo mkdir -p /data/db

Я продолжаю получать

mkdir: / data: файловая система только для чтения


1
stackoverflow.com/questions/58283257/… Это отвечает на комментарии ниже.
camille

Ответы:


141

Если у вас 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 не найден
Шоеб Мирза

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

76

из официальных документов 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


15

С новым обновлением 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свой терминал, он должен работать.

Extra => Если вам нужно дать ему права текущего пользователя, используйте эту строку кода:

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

(Просто для информации -> $(whoami)это просто переменная, которая возвращает вашего текущего пользователя)


11

Сделать постоянное изменение пути к dbпапке mongod .

Следуя этим документам, они говорят примерно следующее. Если mongod запущен с сервисами пивоварения:

$ brew services start mongodb-community@4.2

Он будет использовать файл конфигурации по пути /usr/local/etc/mongod.conf


Чтобы исправить это, отредактируйте файл конфигурации:

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

И измените, dbPathнапример, свой домашний каталог следующим образом:

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

3

Вот что сработало для меня, когда я проходил курс Udemy: 1. Установите HomeBrew, введя это в свой терминал.

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

  2. Запустите в Терминале a) brew uninstall mongodb b) При необходимости запустите brew uninstall --force mongodb c) brew tap mongodb/brew d) brew install mongodb-community e)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

Итак, с macOS Catalina 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. Наслаждайтесь 😉


3

Пути по умолчанию для формулы mongodb-community

Помимо установки сервера 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

Вы больше не можете создать папку в корневом каталоге на 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



1

С macOS Catalina вы больше не можете хранить файлы или данные в системном томе, доступном только для чтения, а также не можете писать в «корневой» каталог (/) из командной строки, например, с помощью Терминала.


1

Вы не можете создать /data/каталог. Это зарезервировано для файловой системы APFS. Посетите блог Bombich по этой проблеме.


Итак, можно ли решить эту проблему с файлом, доступным только для чтения? У меня такая же проблема
Зайнаб Хаммами

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

1

Я сделал это:

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

поскольку новый путь - «usr / local / var / mongodb».


0

Mac-версия Catalina сделала корневую папку недоступной для записи.

У Brew есть обновленная версия mongodb для использования нового пути (который он создает сам), /usr/local/var/mongodbи следование этим инструкциям устранит проблему:

Руководство по установке обновленной версии mongodb-community-edition

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


0

Я создаю суть с простыми шагами по установке и запуску mongodb на каталине

# 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


0

Чтобы дополнить то, что здесь написал Дэвид Бак , сначала вам нужно создать каталог. Вы можете сделать это с помощью:

sudo mkdir / Система / Тома / Данные / данные / БД

Если вы получаете эту ошибку:

«Ошибка синтаксического анализа командной строки: неопознанный параметр '--dbpath / System / Volumes / Data / data / db', попробуйте 'mongod --help' для получения дополнительной информации»

после создания псевдонима это просто потому, что Дэвид Бак (делая действительно полезный комментарий) пропустил пробел в своем ответе.

Чтобы исправить это, введите

unalias mongod

а затем введите

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


Это был не я ... следует отдать должное Эжену Беляеву. Я только что отредактировал их ответ для форматирования ...
Дэвид Бак

0

Я не понимаю, почему Apple сделала это ... Итак, теперь у нас не может быть никаких корневых каталогов, кроме их? Это просто не имеет смысла, и люди, создающие с правами root эти папки, знают, что делают.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.