今日初めて新しい 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」もチェックしてみてください。