mongodbを使ってみる (8) - ユーザー設定 -
今頃かって話ですが、MongoDBで操作するにはユーザー認証が必要っていう設定をやってみる事に
とりあえずユーザー設定をする前段階で
db.samples.save({ name: "hoge" })
db.samples.find()
// { "_id" : ObjectId("50f7533baa1adeb4c2bf432b"), "name" : "hoge" }
っていうのは普通に無難に出来る事を前提に確認しておく。でMongoDBでユーザー認証しないとダメになるケースにするにはmongodb.confを設定しないといけない模様
auth = true
を設定しておく。多分デフォルトで書かれてるけどコメントされてると思うので。でMongoDBを再起動。んでユーザーを作る
use admin
// ユーザーID: test1 パスワード:testで作る
db.addUser("test1", "test")
// 一度ログイン処理しておかないと以降が処理出来ない
db.auth("test1", "test")
// ユーザーID: test2 パスワード: testで作る(但しリードオンリー)
db.addUser("test2", "test", true)
っていう感じで作るとdb.system.usersに格納されているのでfind(show usersでも良いっぽい)すると
{
"_id" : ObjectId("50f76961e832fd5a08ff5353"),
"user" : "test1",
"readOnly" : false,
"pwd" : "129f550b0b221fc14f5127f6b1be5060"
}
{
"_id" : ObjectId("50f76979e832fd5a08ff5354"),
"user" : "test2",
"readOnly" : true,
"pwd" : "e81ab577bdd505b13f1489e5295fe1be"
}
な感じになってる。で一度mongo shellを一度抜けておく。で再度mongo shell起動して
db.samples.find()
をすると
error: {
"$err" : "unauthorized db:sample lock type:-1 client:127.0.0.1",
"code" : 10057
}
んまぁログイン処理しとらんので。
use admin
db.auth("test1", "test")
use sample
db.samples.find()
っていう感じでログインしないと正常に結果が返ってこない。でtest2ユーザーはリードオンリーで作ったので
use admin
db.auth("test2", "test")
use sample
// 読み込みは出来る
db.samples.find()
//unauthorizedで処理出来ない
db.samples.save({ name: "fuga" })
という感じでユーザー認証していない場合とかをエラーにしたりとかリードオンリーなユーザーにするとかっていうのはこんな感じ。