舉例來說,如果我有這樣的用戶:如何更改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