私は次のコマンドは、あなたがしたことを複製すると信じています。ここで私はtest
、データベース内の役割とユーザーを作成しています:
> use test
> db.createRole({role: 'testRole', privileges: [{resource: {db:'test', collection:'test'}, actions:['find','update','insert','remove']}], roles: []})
> db.createUser({user:'testUser',pwd:'password',roles:[{role:'testRole', db:'test'}]})
私はその後、mongo
シェルを終了し、新しい資格情報を使用して再認証をする必要があります。
$ mongo -u testUser -p password --authenticationDatabase test
> db.test2.insert({a:1}) //try inserting to a non-"test" collection
unauthorized
> db.test2.find() //try find on a non-"test" collection
unauthorized
> db.test.insert({a:1}) //insert into "test" collection
Inserted 1 record(s)
> db.test.updateMany({},{$set:{a:2}}) //update "test" collection
{
"acknowledged": true,
"matchedCount": 1,
"modifiedCount": 1
}
> db.test.find() //find on "test" collection
{
"_id": ObjectId("5a0bcfa4322032cfcc3a69c6"),
"a": 2
}
> db.test.deleteOne({a:2}) //delete from "test" collection
{
"acknowledged": true,
"deletedCount": 1
}
> db.test.drop() //try to drop "test" collection
2017-11-15T16:32:07.715+1100 E QUERY [thread1] Error: drop failed: {
"ok": 0,
"errmsg": "not authorized on test to execute command { drop: \"test\" }",
"code": 13,
"codeName": "Unauthorized"
}
私は新しいカスタム役割(testRole
)が正しく承認されていることが見つかりました:私は役割とユーザーを作成した場所それはだからしかし、authenticationDatabase
パラメータは、test
データベースを指している必要があります。これはMongoDB 3.4.10を使用しています。
私はこれがコードを試してもうまくいかないと思うので、やり直してみてください:| | –