Mongod は /data/db フォルダがないと文句を言う 質問する

Mongod は /data/db フォルダがないと文句を言う 質問する

今日初めて新しい Mac を使用しています。mongodb.org の入門ガイドに従って、/data/db ディレクトリを作成する手順まで進めています。ちなみに、私は homebrew ルートを使用しました。

そこでターミナルを開き、「ls」を実行すると、デスクトップ アプリケーション、ムービー、ミュージック、画像、ドキュメント、ライブラリのフォルダーが表示されるので、ホーム ディレクトリと呼ばれる場所にいると思います。

そこで私は

mkdir -p /data/db

まず、アクセスが拒否されましたと表示されます。30分間さまざまなことを試し続けましたが、最終的に次のようになりました。

mkdir -p data/db

うまくいきました。そして、「ls」を実行すると、データのディレクトリとその中にネストされた db フォルダが存在します。

その後、mongodを起動すると、データ/データベースが見つからないというエラーが表示されます

私は何か間違ったことをした?

今私は

sudo mkdir -p /data/db

そして「ls」を実行すると、データディレクトリとdbディレクトリが表示されます。しかし、dbディレクトリ内には何も入っておらず、mongodを実行すると

Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit: 
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now

編集 エラーメッセージを取得

sudo chown mongod:mongod /data/db

chown: mongod: Invalid argument

みんな、ありがとう!

ベストアンサー1

間違った場所にディレクトリを作成しました

/data/db は、'/' ルート ディレクトリの直下にあることを意味しますが、'data/db' (先頭の / なし) は、おそらく '/root' ホーム ディレクトリなどの別のディレクトリのすぐ内側に作成されます。

このディレクトリはルートとして作成する必要があります

のいずれかを使用する必要がありますsudo。例:sudo mkdir -p /data/db

su -または、スーパーユーザーになって、ディレクトリを作成する必要があります。mkdir -p /data/db


注記:

MongoDB には、データ ディレクトリを別の場所に作成できるオプションもありますが、常に db-path を手動で指定する必要があるため、DB リカバリなどの処理が少し複雑になるため、通常はお勧めできません。これを実行することはお勧めしません。


編集:

表示されるエラー メッセージは、「ロック ファイルを作成/開くことができません: /data/db/mongod.lock errno:13 権限が拒否されました」です。作成したディレクトリに適切な権限と所有権がないようです。MongoDB プロセスを実行するユーザーが書き込み可能である必要があります。

'/data/db/' ディレクトリの権限と所有権を確認するには、次の操作を行います: (権限と所有権は次のようになります)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

左側の「drwxr-xr-x」は、ユーザー、グループ、その他の権限を示します。「mongod mongod」は、ディレクトリの所有者と、そのディレクトリが属するグループを示します。この場合は、両方とも「mongod」と呼ばれます。

'/data/db' ディレクトリに上記の権限と所有権がない場合は、次の操作を行ってください

まず、mongo ユーザーが持つユーザーとグループを確認します。

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

mongod はデーモンなので、 /etc/passwd に mongod のエントリが必要です。

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

次のようにユーザー名とグループ名を使用することもできます (これらは /etc/passwd と /etc/group にあります)

sudo chown -R mongod:mongod /data/db 

それで動作するはずです。

以下のコメントでは、これを使っている人がいました:

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

または

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

欠点は、$USER がログイン シェルを持つアカウントであることです。セキュリティ上の理由から、デーモンにはシェルがないのが理想的です。そのため、上記のパスワード ファイルの grep で /bin/false が表示されます。

ディレクトリ権限の意味をよりよく理解するには、ここを確認してください。

http://www.perlfect.com/articles/chmod.shtml

Google で見つかるチュートリアルの 1 つ「初心者向け UNIX」もチェックしてみてください。

おすすめ記事