1. ホーム
  2. macos

[解決済み】Mongod が /data/db フォルダがないと文句を言う問題

2022-01-24 14:21:58

質問

今日初めて新しいMacを使います。mongodb.orgのget startedガイドに従って、/data/dbディレクトリを作成するステップまでやっています。

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

そこで、私は

mkdir -p /data/db

をクリックすると、permission deniedと表示されます。30分ほどいろいろ試してみて、ようやく:

{コード

で、lsすると、dataのディレクトリとその中にdbのフォルダが存在します。

その後、mongodを起動すると、data/dbが見つからないと文句を言われる。

何か間違ったことをしたのでしょうか?

を行った今。

mkdir -p data/db

しかし、dbディレクトリの中には何もなく、今mongodを実行すると

sudo mkdir -p /data/db

EDIT のエラーメッセージが表示されます。

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

皆さん、ありがとうございました。

解決するには?

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

/しかし、あなたが作成した「data/db」(先頭の「/」なし)は、おそらく「/root」ホームディレクトリなど、別のディレクトリのすぐ下に作成されたものです。

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

のどちらかを使用する必要があります。 sudo chown mongod:mongod /data/db chown: mongod: Invalid argument は、例えば sudo

または、以下のようにする必要があります。 sudo mkdir -p /data/db でスーパーユーザーになり、ディレクトリを作成します。 su -


MongoDBにはデータディレクトリを別の場所に作るオプションもありますが、一般的にはあまり良いアイデアではありません。常に手動でdb-pathを指定しなければならないので、DBの復旧などが若干複雑になるだけだからです。 私はそれを行うことをお勧めしません。


編集する

エラーメッセージは "Unable to create/open lock file: /data/db/mongod.lock errno:13 パーミッションが拒否されました" . 作成したディレクトリのパーミッションと所有権が正しく設定されていないようです --。 MongoDB プロセスを実行しているユーザーによって書き込み可能である必要があります。

data/db/」ディレクトリのパーミッションと所有権を確認するには、次のようにします。 (パーミッションと所有者はこのように表示されるはずです)

mkdir -p /data/db

左側の「drwxr-xr-x」は、User、Group、Othersのパーミッションを示しています。 'mongod mongod'は、そのディレクトリが誰のもので、そのディレクトリがどのグループに属しているかを示しています。 この場合、どちらも'mongod'と呼ばれます。

もし、'/data/db' ディレクトリに上記のパーミッションと所有権がない場合は、次のようにしてください。 :

まず、mongoのユーザーがどのようなユーザーとグループを持っているかを確認します。

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

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

{コード

また、以下のようにuser-nameとgroup-nameを使用することができます。 (これらは /etc/passwd と /etc/group にあります )

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

これでうまくいくはずです。

下のコメントでは、こんな使い方をしている人もいました。

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

または

プレ sudo chown -R mongod:mongod /data/db

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

ディレクトリのパーミッションの意味をより深く理解するために、こちらをご確認ください。

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

また、Googleで検索したチュートリアルの一つをチェックしてみてください。"初心者のためのUNIX"