Na przykład, jeśli mam tego użytkownika:Jak zmienić uprawnienia użytkownika MongoDB?
> db.system.users.find()
{ "user" : "testAdmin", "pwd" : "[some hash]", "roles" : [ "clusterAdmin" ], "otherDBRoles" : { "TestDB" : [ "readWrite" ] } }
I chcę dać, że user dbAdmin
uprawnienia do bazy TestDB
mogę usunąć rekord użytkownik następnie włożyć go z powrotem z nowymi uprawnieniami:
> db.system.users.remove({"user":"testAdmin"})
> db.addUser({ user: "testAdmin",
pwd: "[whatever]",
roles: [ "clusterAdmin" ],
otherDBRoles: { TestDB: [ "readWrite", "dbAdmin" ] } })
Ale to wydaje się być hacky i podatne na błędy.
I mogę zaktualizować rekord tabeli sama:
> db.system.users.update({"user":"testAdmin"}, {$set:{ otherDBRoles: { TestDB: [ "readWrite", "dbAdmin" ] }}})
Ale nie jestem pewien, czy to naprawdę tworzy odpowiednie uprawnienia - wygląda w porządku, ale może to być subtelnie źle.
Czy jest lepszy sposób to zrobić?
Czy narzędzie sprawdzania uprawnień MongoDB czyta z bazy danych przy każdym dostępie lub jest buforowane? –
Przy każdym dostępie. Zobacz część aktualizacji w odpowiedzi. –
Dobra odpowiedź, brakuje jednak małego kawałka: db.system.users.update ({"user": "testAdmin"}, {$ addToSet: {'otherDBRoles.TestDB': 'dbAdmin'}}, false, false) (użyj db.system.users not db.users) –