Schreibgeschütztes Dateisystem beim Versuch von mkdir / data / db auf einem Mac

Antworten:

142

Wenn Sie einen Mac haben und auf Catalina aktualisiert haben, ist der Stammordner nicht mehr beschreibbar.

Ich habe gerade das Verzeichnis woanders geändert.

Ich benutze diesen Befehl jetzt

mongod --dbpath=/Users/user/data/db
David Pina
quelle
4
Gibt es eine Möglichkeit, es dauerhaft zu machen? Ich muss es jedes Mal eingeben, wenn ich den MongoDB-Server starte!
AV Paul
2
@AVPaul Vielleicht nicht die beste Lösung, aber Sie könnten einen Alias ​​erstellen, der auf Ihren Pfad verweist.
DjangoBlockchain
1
@ JeffGoes Ich gehe davon aus, dass Sie den Benutzer nicht durch den tatsächlichen Namen ersetzt haben.
Aman
2
@AlexL Es funktioniert auch bei mir. Aber muss ich mongod --dbpath = / Users / my_USER_name / data / db jedes Mal eingeben, wenn ich meine dev mongo db ausführen möchte? Denn wenn ich das nächste Mal mongod starte, heißt es / data / db nicht gefunden
Shoeb Mirza
3
Sie können es dauerhaft machen, indem Sie den dbPath in der mongoDB-Konfigurationsdatei festlegen, wenn Sie einen Mac verwenden, der sich unter /usr/local/etc/mongod.conf befindet. Fügen Sie dann Folgendes hinzu: "storage: dbPath: path to your db directory"
Samoox
76

aus den offiziellen Dokumenten https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

Installieren Sie Homebrew und führen Sie die folgenden Befehle aus

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

dann

brew tap mongodb/brew

dann

brew install [email protected]

und

brew services start mongodb-community

oder

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

dann

ps aux | grep -v grep | grep mongod

und

mongo

um zu überprüfen, ob Sie show dbsin der Mongo-Shell ausgeführt werden können

Will Abule
quelle
16

Mit dem neuen macOS Catalina-Update wird der Ordner /data/dbschreibgeschützt. Sie können ihn nicht ändern. Gehen Sie folgendermaßen vor, um eine Datenbank in einem anderen Ordner zu erstellen:

  1. mongodVerzeichnis wechseln :

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

  2. Geben Sie ihm einen Alias, um es zu verwenden als mongod:

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

  3. Geben mongodSie einfach Ihr Terminal ein, es sollte funktionieren.

Extra => Wenn Sie ihm aktuelle Benutzerrechte geben müssen, verwenden Sie diese Codezeile:

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

(Nur zur Information -> $(whoami)ist nur eine Variable, die Ihren aktuellen Benutzer zurückgibt.)

Eugène Beliaev
quelle
11

Um eine dauerhafte Änderung des Pfades des Mongod- dbOrdners vorzunehmen .

Nach diesen Dokumenten sagen sie ungefähr dies. Wenn Mongod mit Brauservices gestartet wird:

$ brew services start mongodb-community@4.2

Es wird die Konfigurationsdatei im Pfad verwendet /usr/local/etc/mongod.conf


Um dies zu beheben, bearbeiten Sie die Konfigurationsdatei:

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

Und ändern Sie das dbPathzB wie folgt in Ihr Home-Verzeichnis:

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 

Speichern Sie die Datei und starten Sie Mongod mit Brew neu:

$ brew services restart mongodb-community@4.2
Jirik
quelle
1
das hat bei mir nicht funktioniert, mongo sucht immer noch in / data / db
Xen_mar
@ Xen_mar Haben Sie versucht, Mongod nach dem Bearbeiten der Datei auszuführen? Offenbar ist mongod bereits von Gebräu Dienste laufen beginnen
JEC
3

Dies hat bei mir funktioniert, als ich einen Udemy-Kurs absolvierte: 1. Installieren Sie HomeBrew, indem Sie dies in Ihr Terminal eingeben

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. Verschieben Sie Ihren alten Ordner / data / db (wenn Sie Ihre aktuelle Datenbank sichern möchten) in einen Nicht-Root-Ordner und fahren Sie mit dem nächsten Schritt fort

  2. In Terminal a) brew uninstall mongodb b) Bei Bedarf ausführen brew uninstall --force mongodb c) brew tap mongodb/brew d) brew install mongodb-community e)brew services start mongodb/brew/mongodb-community

  3. Jetzt müssen Sie nur noch mongo im Terminal ausführen und sehen das mongo-Shell-Symbol>.

Bitte lassen Sie mich wissen, ob dies funktioniert;) Ich habe fast 2 Stunden gebraucht, um es basierend auf diesem Artikel herauszufinden: /apple/362883/mongodb-doesnt-work-after-update-to -macos-Catalina-10-15

Prost, Radu

Radu S.
quelle
3

Wenn Sie auf einem Mac arbeiten und mit dem Problem konfrontiert sind, ist der folgende Befehl hilfreich. whoamiVariable erhält den aktuellen Benutzer

mongod --dbpath=/Users/$(whoami)/data/db
Anjum ....
quelle
3

Mit macOS Catalina hat Apple aus Sicherheitsgründen ein neues Volume erstellt. Wenn Sie mit macOS Catalina arbeiten, müssen Sie den /data/dbOrdner in erstellen System/Volumes/Data.

Befolgen Sie diese Befehle

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

Starten Sie MongoDB

  1. brew services run mongodb-community

  2. Viel Spaß 😉


quelle
3

Standardpfade für die Mongodb-Community-Formel

Zusätzlich zur Installation der MongoDB-Server- und Tool-Binärdateien erstellt die Mongodb-Community-Formel:

  • eine Konfigurationsdatei: /usr/local/etc/mongod.conf
  • Ein Protokollverzeichnispfad: / usr / local / var / log / mongodb
  • Ein Datenverzeichnispfad: / usr / local / var / mongodb

dann hat es bei mir geklappt:

mkdir -p usr/local/var/mongodb/data/db
Shivkanth Patil
quelle
2

Sie können auf Mac Catalina keinen Ordner mehr im Stammverzeichnis erstellen!

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

Spezielles Systemvolumen

macOS Catalina läuft auf einem dedizierten, schreibgeschützten System-Volume. Dies bedeutet, dass es vollständig von allen anderen Daten getrennt ist und die Zuverlässigkeit von macOS verbessert.

# 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

xgqfrms
quelle
1

Mit macOS Catalina können Sie weder Dateien oder Daten mehr auf dem schreibgeschützten Systemvolume speichern noch über die Befehlszeile in das "root" -Verzeichnis (/) schreiben, z. B. mit Terminal.

Ümit Ünver
quelle
1

Sie können kein /data/Verzeichnis erstellen . Das ist für das APFS-Dateisystem reserviert. Überprüfen Sie Bombichs Blog zu diesem Thema.

jvarela
quelle
Könnte dieses Problem mit schreibgeschützten Dateien behoben werden? Ich habe das gleiche Problem
Zainab Hammami
2
Nein, Sie müssen einen anderen Namen für Ihr Verzeichnis verwenden. Eine mögliche Lösung könnte darin bestehen, das Datenverzeichnis in einem anderen Verzeichnis zu erstellen, das als Stammverzeichnis zulässig ist.
Jvarela
1

Ich tat dies:

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

seit dem neuen Pfad "usr / local / var / mongodb".

franfonse
quelle
1

Ich bin ratlos, warum Apple das getan hat. Jetzt können wir also kein anderes Stammverzeichnis als das ihre haben? Dies macht einfach keinen Sinn und Leute, die mit Root-Rechten diese Ordner erstellen, wissen, was sie tun

Laurent-Philippe Albou
quelle
0

Mac-Version Catalina hat den Stammordner nicht mehr beschreibbar gemacht.

Brew hat eine aktualisierte Version von mongodb, um einen neuen Pfad zu verwenden (den es selbst erstellt). Das Befolgen /usr/local/var/mongodbdieser Anweisungen behebt das Problem:

Anleitung zur Installation der aktualisierten Mongodb-Community-Edition

brew install mongodb-community@VERSION wobei die erste VERSION mit dem Fix 4.2 ist

RobKohr
quelle
0

Ich erstelle einen Kern mit einfachen Schritten, um Mongodb auf Catalina zu installieren und auszuführen

# install homebrew (https://brew.sh/) and run the following commands
sudo chown -R $(whoami) $(brew --prefix)/*
brew tap mongodb/brew
brew install [email protected]

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

Nicolas Sturm
quelle
0

Um das zu ergänzen, was David Buck hier geschrieben hat , müssen Sie zuerst das Verzeichnis erstellen. Sie können das tun mit:

sudo mkdir / System / Volumes / Daten / Daten / db

Wenn Sie diesen Fehler erhalten:

"Fehler beim Parsen der Befehlszeile: Nicht erkannte Option '--dbpath / System / Volumes / Data / data / db' versuchen Sie 'mongod --help' für weitere Informationen."

Nach dem Erstellen des Alias ​​hat David Buck (während er einen wirklich hilfreichen Kommentar abgegeben hat) ein Leerzeichen in seiner Antwort verpasst.

Um dies zu beheben, geben Sie ein

unalias mongod

und geben Sie dann ein

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

JohnnyG
quelle
Ich war es nicht ... Kredit sollte an Eugène Beliaev gehen. Ich habe gerade ihre Antwort für die Formatierung bearbeitet ...
David Buck