我在我的“股票”数据库中设置了一个用户,希望该用户能够完全管理股票数据库中的收藏和索引。
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副本集。
答案 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"
]
}