MongoDB認証の例

MongoDB認証の例

このガイドでは、MongoDBで認証を有効にする方法を示します。 認証はデフォルトで無効になっています。 設定するには、最初に「admin」データベースにユーザーを追加する必要があります。

> show dbs
admin  #add single user to this database
testdb

Note
「admin」データベースに通常のアクセス権を持つユーザーは、他のすべてのデータベースへの読み取りおよび書き込みアクセス権を持っています。 「admin」データベースへの読み取り専用アクセス権を持つユーザーは、すべてのデータベースに対してのみ読み取りが可能です。

P.S This example is using MongoDB version 2.2.3

認証の例

「admin」ユーザーをadminデータベースに追加し、通常のユーザーを「testdb」データベースに追加する完全な例と、認証の実行方法を参照してください。

ターミナル1 – MongoDBをセキュアモードで起動します。認証が必要です。

$mongo --auth

ターミナル2 – MongoDBクライアント、説明のないコメント「#」を参照

$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use admin                  #1. connect to the "admin" database.
switched to db admin
> db.addUser("admin","password") #2. add a user "admin" to the admin database.
{
    "user" : "admin",
    "readOnly" : false,
    "pwd" : "90f500568434c37b61c8c1ce05fdf3ae",
    "_id" : ObjectId("513af8cac115e7a6b4bcceb9")
}
addUser succeeded, but cannot wait for replication since we no longer have auth

> use testdb             #3. connect to the "testdb" database.
switched to db testdb
> show collections           #4. now, read and write need authentication
Sat Mar  9 16:54:57 uncaught exception: error: {
    "$err" : "unauthorized db:testdb ns:testdb.system.namespaces lock type:0 client:127.0.0.1",
    "code" : 10057
}
> use admin              #5. connect back to the "admin" database.
switched to db admin
> db.auth("admin","password")        #6. performs authentication, 1 means succeed, 0 means failed
1
> use testdb             #7. connect to the "testdb" database.
switched to db testdb
> show collections           #8. no problem, it shows all collections
system.indexes
user
> db.addUser("testdb","password")       #9. add another user "testdb" to the "testdb" database.
{
    "user" : "testdb",
    "readOnly" : false,
    "pwd" : "b9ff75cbf18bd98d8554efec12c72090",
    "_id" : ObjectId("513af934c115e7a6b4bcceba")
}
> show collections
system.indexes
system.users                #10. All users' data are stored in this system.users collection.
user
> db.system.users.find()
{ "_id" : ObjectId("513af934c115e7a6b4bcceba"), "user" : "testdb", "readOnly" : false, "pwd" : "b9ff75cbf18bd98d8554efec12c72090" }
>

完了しました。