MongoDBのユーザ認証

ユーザの作成

adminデータベースに作成されたユーザは管理者ユーザとなる。
ユーザは各データベース毎に作成する。
ちなみにdb.addUser("id","pass",true)のように第3引数にtrueを指定するとreadOnlyのユーザが作成できるらしい。

root@johan:/usr/local/mongodb# /usr/local/mongodb/bin/mongo
MongoDB shell version: 2.0.2
connecting to: test
> use admin
switched to db admin
> db.addUser("i2bs","secret")
{ "n" : 0, "connectionId" : 2, "err" : null, "ok" : 1 }
{
	"user" : "i2bs",
	"readOnly" : false,
	"pwd" : "788ef86d24968c0d5cdd2bf710de57f7",
	"_id" : ObjectId("4f4b80e9248e475bcaccd259")
}
> db.system.users.find()
{ "_id" : ObjectId("4f4b80e9248e475bcaccd259"), "user" : "i2bs", "readOnly" : false, "pwd" : "788ef86d24968c0d5cdd2bf710de57f7" }
> exit
bye

認証の有効化

認証を有効にするには--authオプションを付与して起動する。
認証を有効にすると処理をする為には処理対象のデータベースへのログインが必要になる。
MongoDB全体の処理はadminデータベースへのログインが必要。

/usr/local/mongod --auth

認証方法

  • シェル起動時に認証
/usr/local/mongodb/bin/mongo mydb -u i2bs -p secret
  • シェル内で認証
> use mydb
switched to db mydb
> db.auth("i2bs","secret")
1 # 1は成功、失敗すると0が出力される
> exit
bye

ユーザ削除

root@johan:/usr/local/mongodb# /usr/local/mongodb/bin/mongo
MongoDB shell version: 2.0.2
connecting to: test
> use mydb
switched to db mydb
> db.system.users.remove({user:"test"})
> db.system.users.find()
> exit
bye