System plików tylko do odczytu przy próbie mkdir / data / db na komputerze Mac


Odpowiedzi:


157

Jeśli masz komputer Mac i zaktualizowano go do wersji Catalina, folder główny nie jest już zapisywalny.

Właśnie zmieniłem katalog gdzie indziej.

Używam tego polecenia na razie

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

4
Czy istnieje sposób, aby to było trwałe? Muszę to wpisywać za każdym razem, gdy uruchamiam serwer MongoDB!
AV Paul

2
@AVPaul Może nie jest to najlepsze rozwiązanie, ale możesz stworzyć alias odnoszący się do Twojej ścieżki.
DjangoBlockchain,

1
@JeffGoes Zakładam, że nie zastąpiłeś użytkownika rzeczywistą nazwą.
Aman

2
@AlexL U mnie też to działa. Ale czy muszę wpisywać mongod --dbpath = / Users / my_USER_name / data / db za każdym razem, gdy chcę uruchomić moją dev mongo db? Ponieważ następnym razem, gdy uruchomię mongod, mówi / data / db not found
Shoeb Mirza

3
możesz uczynić to stałym, ustawiając dbPath w pliku konfiguracyjnym mongoDB, jeśli używasz Maca, znajduje się on w /usr/local/etc/mongod.conf. następnie dodaj następujący tekst: „storage: dbPath: ścieżka do katalogu db”
Samoox,

81

z oficjalnych dokumentów https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

zainstaluj homebrew i uruchom następujące polecenia

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

następnie

brew tap mongodb/brew

następnie

brew install mongodb-community@4.2

i

brew services start mongodb-community

lub

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

następnie

ps aux | grep -v grep | grep mongod

i

mongo

aby sprawdzić, czy możesz uruchomić show dbsw powłoce mongo


brew services start mongodb-community => Błąd: Formuła mongodb-communitynie jest zainstalowana. Musisz uruchomić: usługi warzenia rozpoczynają się mongodb/brew/mongodb-community@4.2
Andresse Njeungoue

20

Dzięki nowej aktualizacji macOS Catalina folder /data/dbstaje się tylko do odczytu i nie można go modyfikować. Postępuj zgodnie z tą procedurą, aby utworzyć bazę danych w innym folderze:

  1. Zmień mongodkatalog:

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

  2. Nadaj mu alias, aby używać go jako mongod:

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

  3. Po prostu wpisz mongodswój terminal, powinno działać.

Extra => Jeśli chcesz nadać mu aktualne uprawnienia użytkownika, użyj tej linii kodu:

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

(Tylko dla informacji -> $(whoami)to tylko zmienna, która zwraca aktualnego użytkownika)


1
Zrobiłem to przed krokiem 1: sudo mkdir -p /System/Volumes/Data/data/db&& sudo chown -R `id -un` /System/Volumes/Data/data/db. Nie jestem pewien, czy te foldery już istnieją, ale połączono odpowiedź @ xgqfrms z tym. Wielkie dzięki za to, doprowadzało mnie do szału.
twknab

11

Aby trwale zmienić ścieżkę do dbfolderu mongod .

Po tych dokumentach mówią z grubsza to. Jeśli mongod jest uruchamiany z usługami parzenia:

$ brew services start mongodb-community@4.2

Będzie używał pliku konfiguracyjnego w path /usr/local/etc/mongod.conf


Aby to naprawić, edytuj plik konfiguracyjny:

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

I zmień dbPathnp na swój katalog domowy w ten sposób:

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 

Zapisz plik i zrestartuj mongod z brew:

$ brew services restart mongodb-community@4.2

1
to nie zadziałało dla mnie, mongo wciąż szuka w / data / db
Xen_mar

@Xen_mar czy próbowałeś uruchomić mongod po edycji pliku? Podobno mongod jest już prowadzony przez browary startujące
JEC

5

Tak więc w macOS Catalina Apple utworzył nowy wolumin ze względów bezpieczeństwa. Jeśli korzystasz z macOS Catalina, musisz utworzyć /data/dbfolder w System/Volumes/Data.

Postępuj zgodnie z tymi poleceniami

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

Uruchom MongoDB

  1. brew services run mongodb-community

  2. Ciesz się 😉


4

Nie możesz już utworzyć folderu w katalogu głównym na komputerze Mac Catalina!

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

Dedykowany wolumin systemowy

macOS Catalina działa na dedykowanym woluminie systemowym tylko do odczytu - co oznacza, że ​​jest całkowicie oddzielony od wszystkich innych danych i pomaga zwiększyć niezawodność systemu 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

refs

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

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

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


3

Oto, co zadziałało w moim przypadku, gdy przechodziłem kurs Udemy: 1. Zainstaluj HomeBrew, wpisując to w swoim terminalu

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. Przenieś swój stary folder / data / db (jeśli chcesz wykonać kopię zapasową bieżącej bazy danych) do folderu innego niż główny i przejdź do następnego kroku

  2. Uruchom w Terminalu a) brew uninstall mongodb b) W razie potrzeby uruchom brew uninstall --force mongodb c) brew tap mongodb/brew d) brew install mongodb-community e)brew services start mongodb/brew/mongodb-community

  3. Teraz wystarczy uruchomić mongo w terminalu, a zobaczysz symbol powłoki mongo>.

Daj mi znać, czy to działa;) Zajęło mi to prawie 2 godziny, na podstawie tego artykułu: /apple/362883/mongodb-doesnt-work-after-update-to -macos-catalina-10-15

Pozdrawiam, Radu


3

Jeśli korzystasz z komputera Mac i masz do czynienia z problemem, przydatne jest poniższe polecenie, whoamizmienna pobierze bieżącego użytkownika

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

3

Domyślne ścieżki dla formuły mongodb-community

Oprócz zainstalowania serwera MongoDB i plików binarnych narzędzi, formuła mongodb-community tworzy:

  • plik konfiguracyjny: /usr/local/etc/mongod.conf
  • ścieżka do katalogu dziennika: / usr / local / var / log / mongodb
  • ścieżka do katalogu danych: / usr / local / var / mongodb

wtedy zadziałało dla mnie:

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

2

Nie możesz utworzyć /data/katalogu. To jest zarezerwowane dla systemu plików APFS. Sprawdzić Bombich na blogu o tym problemie.


Czy można więc rozwiązać ten problem z plikiem tylko do odczytu? Mam ten sam problem
Zainab Hammami

2
Nie, musisz użyć innej nazwy dla swojego katalogu. Możliwym rozwiązaniem mogłoby być utworzenie katalogu danych w innym katalogu, który jest dozwolony jako katalog główny.
jvarela

2

Ja to zrobiłem:

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

ponieważ nowa ścieżka to „usr / local / var / mongodb”.


2

Nie wiem, dlaczego Apple to zrobił… Więc teraz nie możemy mieć innego katalogu głównego niż ich? To po prostu nie ma sensu, a osoby tworzące te foldery z uprawnieniami roota wiedzą, co robią


1

W systemie macOS Catalina nie można już przechowywać plików ani danych na woluminie systemowym tylko do odczytu ani zapisywać w katalogu „głównym” (/) z wiersza poleceń, na przykład w Terminalu.


1

Aby dodać do tego, co napisał tutaj David Buck , najpierw musisz faktycznie utworzyć katalog. Możesz to zrobić za pomocą:

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

Jeśli otrzymujesz ten błąd:

„Błąd podczas analizowania wiersza poleceń: nierozpoznana opcja '--dbpath / System / Volumes / Data / data / db' try 'mongod --help', aby uzyskać więcej informacji”

po utworzeniu aliasu to tylko dlatego, że David Buck (robiąc bardzo pomocny komentarz) przegapił spację w swojej odpowiedzi.

Aby to naprawić, wpisz

unalias mongod

a następnie wpisz

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


To nie ja ... zasługa Eugène Beliaev. Właśnie zredagowałem ich odpowiedź dotyczącą formatowania ...
David Buck,


0

Tworzę streszczenie w prostych krokach, aby zainstalować i uruchomić mongodb na Catalinie

# 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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.