用户在" dbAdmin"角色什么都找不到?

时间:2014-05-20 20:33:14

标签: mongodb

我在我的“股票”数据库中设置了一个用户,希望该用户能够完全管理股票数据库中的收藏和索引。

dmReplSet:PRIMARY> use stocks
switched to db stocks
dmReplSet:PRIMARY> db.addUser( { user : "stocks", pwd : "b0nd5", roles : [ "dbOwner", "backup", "restore" ] } );
dmReplSet:PRIMARY> db.system.users.find()
{ "_id" : ObjectId("537bb7d963095ee3392c552e"), "user" : "stocks", "pwd" : "24efdd0922a7c949e1e9c355e7d7648c", "roles" : [  "dbOwner",  "backup",  "restore" ] }

如果我正确理解了MongoDB的“内置角色”(http://docs.mongodb.org/manual/reference/built-in-roles/),那么将这个人设置为“dbOwner”就应该在“stock”数据库中授予我这些特权。

然而,

Mongo Shelling作为这个用户表明我什么都做不了。我找不到,我无法插入,我所能做的就是炮弹.Arghhhh。我哪里做错了。 “dbOwner”角色是否真的没有授予我用户数据库所需的所有访问权限?

bobk-mbp:~ bobk$ mongo -u stocks -p 'b0nd5' localhost/stocks
MongoDB shell version: 2.4.6
connecting to: localhost/stocks
> db
stocks
> db.bob.find()
error: { "$err" : "not authorized for query on stocks.bob", "code" : 16550 }
> 

我正在操作Mongo 2.4.6副本集。

1 个答案:

答案 0 :(得分:1)

Mongo 2.4.6中不存在“dbOwner”角色。将“readWrite”,“dbAdmin”,“userAdmin”的组件角色添加到角色可以解决问题。

dmReplSet:PRIMARY> use stocks
switched to db stocks
dmReplSet:PRIMARY> db.addUser( {
  user : "stocks", 
  pwd : "b0nd5", 
  roles : [ "readWrite", "dbAdmin", "userAdmin", "backup", "restore" ]
} );
dmReplSet:PRIMARY> db.system.users.find().pretty()
{
    "_id" : ObjectId("537bc4d563095ee3392c5531"),
    "user" : "stocks",
    "pwd" : "24efdd0922a7c949e1e9c355e7d7648c",
    "roles" : [
            "readWrite",
            "dbAdmin",
            "userAdmin",
            "backup",
            "restore"
    ]
}