
Mongo init スクリプトを使用して、認証サポート付きの MongoDB デーモンを起動します。
sudo /etc/init.d/mongod start
認証のためにデータベースに db ユーザーも追加しました。/etc/init.d/mongod
(init 用) と/etc/mongod.conf
(config 用) の 2 つのファイルを操作しています。
#mongod.conf:
dbpath=/var/lib/mongodb
logappend=true
port = 27017
auth = true
非デーモン方式では、次の--auth
フラグを使用してプロセスを適切に開始します。
mongod --auth
フォークは機能しますが、init スクリプトは使用されません。
mongod --fork --auth --logpath /var/log/mongod.log
すべてのドキュメントと関連投稿を読んでも、認証サポートを取得するための実用的な解決策を持っている人は誰もいないようです。
service mongod start
リンク:
- init スクリプトでプロセスを開始すると奇妙な動作が発生する
- http://docs.mongodb.org/manual/administration/configuration/
- Upstart 経由で mongodb を設定する - オプションを渡す方法は?
service mongod start
更新: Debian/Mongo を再インストールし、conf ファイルで使用できるようになりましたauth = true
。おそらく、最初のインストール/構成中に何かを壊したのでしょう。
答え1
私は、新規の Debian 7 インストールと新規の MongoDB インストールでこれをテストしました。最初にユーザー (adam) を追加し、ファイルを編集して行/etc/mongod.conf
のコメントを解除しましたauth = true
。次に、service mongod restart
コマンドを発行してユーザーとしてログインしようとしたところ、成功しました。また、間違った資格情報を試したところ、失敗しました。したがって、認証は正常に機能しているようで、構成ファイルを使用して認証を有効にすることを指定する際の明らかな問題はありませんでした。
そこで、いくつか質問があります。
- 認証が有効になっていることをどのようにテストしていますか?
- 設定ファイル内に auth/noauth ステートメントを含む行が複数あるのではないでしょうか。
参考までに、シェルなどからのフィードバックを使った私のテストのほとんどをここに示します。
まず、インストールと初期ユーザーの設定を行います。
root@deb7:~# apt-get install mongodb-org
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
The following NEW packages will be installed:
mongodb-org mongodb-org-mongos mongodb-org-server mongodb-org-shell
mongodb-org-tools
0 upgraded, 5 newly installed, 0 to remove and 20 not upgraded.
Need to get 114 MB of archives.
After this operation, 287 MB of additional disk space will be used.
Do you want to continue [Y/n]?
** SNIP for brevity**
Setting up mongodb-org-shell (2.6.1) ...
Setting up mongodb-org-server (2.6.1) ...
Adding system user `mongodb' (UID 104) ...
Adding new user `mongodb' (UID 104) with group `nogroup' ...
Not creating home directory `/home/mongodb'.
Adding group `mongodb' (GID 107) ...
Done.
Adding user `mongodb' to group `mongodb' ...
Adding user mongodb to group mongodb
Done.
[ ok ] Starting database: mongod.
Setting up mongodb-org-mongos (2.6.1) ...
Setting up mongodb-org-tools (2.6.1) ...
Setting up mongodb-org (2.6.1) ...
root@deb7:~# mongo
MongoDB shell version: 2.6.1
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
> use admin
switched to db admin
> db.createUser(
... {
... user: "adam",
... pwd: "password123",
... roles:
... [
... {
... role: "userAdminAnyDatabase",
... db: "admin"
... }
... ]
... }
... )
Successfully added user: {
"user" : "adam",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
次に、/etc/mongod.conf
ファイルを編集し、#
コメントアウトされている部分を削除しましたauth = true
(他の変更は行っていません)。そのファイルを保存し、サービスを再起動しました。次に、追加したユーザーに接続し、適切な権限があることを確認しました。
root@deb7:~# vim /etc/mongod.conf
root@deb7:~# service mongod restart
[ ok ] Restarting database: mongod.
root@deb7:~# mongo -u adam -p password123 --authenticationDatabase admin
MongoDB shell version: 2.6.1
connecting to: test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
ご覧のとおり、追加したユーザーには起動時の警告を確認する権限がありませんが、念のため権限を確認しました。
> use admin
switched to db admin
> db.runCommand( { usersInfo:"adam", showPrivileges:true } )
{
"users" : [
{
"_id" : "admin.adam",
"user" : "adam",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"inheritedRoles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"inheritedPrivileges" : [
{
"resource" : {
"db" : "",
"collection" : ""
},
"actions" : [
"changeCustomData",
"changePassword",
"createRole",
"createUser",
"dropRole",
"dropUser",
"grantRole",
"revokeRole",
"viewRole",
"viewUser"
]
},
{
"resource" : {
"cluster" : true
},
"actions" : [
"authSchemaUpgrade",
"invalidateUserCache",
"listDatabases"
]
},
{
"resource" : {
"db" : "",
"collection" : "system.users"
},
"actions" : [
"collStats",
"dbHash",
"dbStats",
"find",
"killCursors",
"planCacheRead"
]
},
{
"resource" : {
"db" : "admin",
"collection" : "system.users"
},
"actions" : [
"collStats",
"dbHash",
"dbStats",
"find",
"killCursors",
"planCacheRead"
]
},
{
"resource" : {
"db" : "admin",
"collection" : "system.roles"
},
"actions" : [
"collStats",
"dbHash",
"dbStats",
"find",
"killCursors",
"planCacheRead"
]
},
{
"resource" : {
"db" : "admin",
"collection" : "system.version"
},
"actions" : [
"collStats",
"dbHash",
"dbStats",
"find",
"killCursors",
"planCacheRead"
]
},
{
"resource" : {
"db" : "admin",
"collection" : "system.new_users"
},
"actions" : [
"collStats",
"dbHash",
"dbStats",
"find",
"killCursors",
"planCacheRead"
]
},
{
"resource" : {
"db" : "admin",
"collection" : "system.backup_users"
},
"actions" : [
"collStats",
"dbHash",
"dbStats",
"find",
"killCursors",
"planCacheRead"
]
}
]
}
],
"ok" : 1
}
完全を期すために、認証失敗の例を示します。
root@deb7:~# mongo -u root -p 12345678 --authenticationDatabase admin
MongoDB shell version: 2.6.1
connecting to: test
2014-05-11T18:04:39.793+0100 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed
答え2
/etc/mongod.conf を編集し、次のような行を追加します。
mongo <3.0の場合
auth=true
それから:
service mongod restart
mongo 3.xの場合は、これを設定に追加します
security:
authorization: "enabled"
答え3
これは私の場合はうまくいきました (mongo 3.2 を使用)。/etc/mongod.conf を編集して以下を追加します。
セキュリティ: 認証: 有効
他の回答と似ていますが、「enabled」を引用符で囲みません