Mac OS 10.15(Catalina)にアップグレードした後、MongoDBがデータディレクトリを見つけられない


61

今日はMacOS 10.15(Catalina)にアップデートしました。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が見つかりません。終了しています

Catalinaには驚きの変更があります。ルートディレクトリへの変更は許可されません(これはフォーラムスレッドでも議論されました)。

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

残念ながら、これはAppleのCatalinaリリースノートに明確に記載されていませんが、Catalina機能での簡単な言及は除きます

macOS Catalinaは読み取り専用の専用システムボリュームで実行されます

ディレクトリ/data/dbはMongoDBのデフォルトとしてコーディングされているため、回避策はdbpath、ルートディレクトリにない別のものを指定することです。例えば:

mongod --dbpath ~/data/db

これにより、MongoDBのデータがホームディレクトリに配置されます。パスを確認してください~/data/db実際に存在。

代替方法

別の方法は、以下を利用してmacOSにMongoDB Community Editionインストールするの手順に従うこと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構成ファイルを変更しない限り、変更ログなどのoplogに依存する機能は機能しません。

    brew services start mongodb-community

回答ありがとうございます。bash_profileでdbpathを設定する方法はありますか?そのため、毎回dbパスでmongodを実行する必要はありません。
Madhavan Sundararaj

アップデート後、OSがmongodbの下に存在していた/ data / dbフォルダーを削除したと思います
Madhavan Sundararaj

1
@MadhavanSundararaj bashとmongodb --dbpath ...入力するだけで実行するmongod場合は、のようなエイリアスを使用して、alias mongod='mongod --dbpath ...'そのエイリアスをに追加できますbashrc。これは最もクリーンなソリューションではありませんが、目的に応じて機能する可能性があります。
kevinadi

最新のmacOSはzshを使用していませんか?もしそうなら、それはまだ.bashrcを使用していますか?上記の推奨エイリアスが期待どおりに機能しなかったため
Madhavan Sundararaj

1
@MadhavanSundararaj zshまたはその他のシェルでは、そのシェルのrcファイルの下にエイリアスを配置する必要があります。以下のためにzshそれはあります~/.zshrc。エイリアスの作成についても、シェルの構文に従ってください。
kevinadi

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
カタリナのアップグレードですべてのデータが消去されたのではないかと、私は気が狂いそうになりました。狂気から私を救ってくれてありがとう!
Adam Bubela

1
@MarnixHarderwijk、ありがとう。
Zeeyed

2
MacOSのカタリナ上で動作し、あなたが私の一日保存ありがとうございました
AFR

mongodコマンドを実行すると、開発者を確認できないため、「mongod」を開くことができません。
Raz

@Raz:私はこれが関連していると思いますapple.stackexchange.com/questions/362883/...
マーニックスHarderwijkの

7

ケビナディはすでに問題を正しかったが、これが私が問題を解決しようとした方法である:

mongodb-communityをインストールした後

  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 (mongodbのdbpathを変更)
  4. mongod (うまく動く)

mongodbのインストールに関するこの記事は非常に役に立ちました


これは、問題を解決しようとする1日後に役立ちました。この記事では、dbpathの変更について触れておらず、それが欠けていたものです
mhlavacka


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-community-editionのインストールガイド

brew install mongodb-community@VERSION ここで、修正された最初のバージョンは4.2です。


上記のコマンドは、sudoで実行する必要があります。次に、dbPath構成が尊重されます。それ以外の場合、mongo /data/dbは、構成に関係なくデフォルトのままです。
Matt Hagemann
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.