举例来说,如果我有这样的用户:如何更改MongoDB用户权限?
> db.system.users.find()
{ "user" : "testAdmin", "pwd" : "[some hash]", "roles" : [ "clusterAdmin" ], "otherDBRoles" : { "TestDB" : [ "readWrite" ] } }
而且我想给该用户的TestDB
数据库的dbAdmin
权限,我可以删除然后用户记录与新的权限添加回去:
> db.system.users.remove({"user":"testAdmin"})
> db.addUser({ user: "testAdmin",
pwd: "[whatever]",
roles: [ "clusterAdmin" ],
otherDBRoles: { TestDB: [ "readWrite", "dbAdmin" ] } })
但是,这似乎hacky和容易出错。
我可以更新表记录本身:
> db.system.users.update({"user":"testAdmin"}, {$set:{ otherDBRoles: { TestDB: [ "readWrite", "dbAdmin" ] }}})
但我不知道,如果真的产生正确的权限 - 它看起来不错,但它可能是微妙的错误。
有没有更好的方法来做到这一点?
MongoDB权限检查器是从数据库中读取每个访问还是缓存? – 2013-07-15 15:10:37
每次访问。在答案中查看更新部分。 – 2013-07-16 15:45:39
不错的答案,它错过了一小段: db.system.users.update({“user”:“testAdmin”},{$ addToSet:{'otherDBRoles.TestDB':'dbAdmin'}},false,假)(使用db.system.users而不是db.users) – 2013-10-22 20:54:20