私はUbuntuにmongodbバージョン3.0.3をインストールしました。 confファイルを編集し、デフォルトのデータディレクトリを「/home/user/mongodb」に変更し、次の権限を与えました。
drwxr-xr-x 4 mongodb mongodb 4096 May 29 23:26 mongodb
confファイルで他のものを変更していません。 mongodサービスを開始しようとすると
sudo service mongod start
mongoコマンドでシェルに接続しましたが、次のエラーが発生しました。
MongoDB shell version: 3.0.3
connecting to: test
2015-05-29T23:58:49.450+0200 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2015-05-29T23:58:49.452+0200 E QUERY Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
at connect (src/mongo/shell/mongo.js:179:14)
at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed
サーバーを起動しようとするたびに、ログファイルに次のように表示されます。
2015-05-30T00:01:02.552+0200 I CONTROL ***** SERVER RESTARTED *****
2015-05-30T00:01:02.581+0200 I STORAGE [initandlisten] exception in initAndListen std::exception: boost::filesystem::status: Permission denied: "/home/user/mongodb/storage.bson", terminating
2015-05-30T00:01:02.581+0200 I CONTROL [initandlisten] dbexit: rc: 100
私が知る限り、権限は正しいです。何が問題なのでしょうか?
答え1
デフォルトでは、ユーザーのホームディレクトリはその所有者だけを読み書きすることができ、他のユーザー(ルートを除く)は他のユーザーのホームフォルダの内容を一覧表示できません。したがって、mongodbユーザーが新しく提供されたディレクトリにアクセスできることを確認する必要があります。次のコマンドを使用して確認できます。
namei -m /home/user/mongodb
出力例
f: /home/scantlight/mongodb
dr-xr-xr-x /
drwxr-xr-x home
drwx------ scantlight
drwxr-xr-x mongodb
ご覧のとおり、私のホームフォルダには読み書き私は権限を持っています、所有者...他のユーザーは権限を持っていないので、他のユーザーは自分のホームフォルダの内容を一覧表示できません(ルートを除く)。
もちろん、ホームディレクトリ内の他のユーザーに書き込みまたは読み取り権限を与えたくありませんが、宛先フォルダへのアクセス権を持ちたいと思います。ここで x フラグを使用できます。ファイルにxフラグが設定されているとファイルを実行できるという意味なので、実行フラグと呼ばれます。ただし、このフラグがフォルダーに設定され、r(読み取り)またはw(書き込み)フラグの両方が設定されていない場合は、時間が設定されます。これは、同じグループの他のユーザーがこのフォルダを介してより深いフォルダにアクセスできることを意味します。
したがって、mongodb ユーザーがアクセス、読み取り、書き込みができることを確認します。/ホーム/ユーザー/mongodbフォルダ...ホームフォルダには、他のすべてのユーザーに対して実行可能フラグ(xフラグ)が設定されている必要があります。
chmod -R o+x /home/user/mongodb
その後、前の出力例は次のようになります。
f: /home/scantlight/mongodb
dr-xr-xr-x /
drwxr-xr-x home
drwx-----x scantlight
drwxr-xr-x mongodb
他のすべてのユーザーに対するx権限を参照してください。役に立たない場合:)... 内部のファイル権限を確認してください。/ホーム/ユーザー/mongodbフォルダに含まれるファイルの権限に問題がある可能性がありますか?