Zum Beispiel, wenn ich diesen Benutzer:Wie ändern Sie MongoDB Benutzerberechtigungen?
> db.system.users.find()
{ "user" : "testAdmin", "pwd" : "[some hash]", "roles" : [ "clusterAdmin" ], "otherDBRoles" : { "TestDB" : [ "readWrite" ] } }
Und ich möchte, dass Benutzer auf der TestDB
Datenbank die dbAdmin
Berechtigungen geben, kann ich den Benutzerdatensatz entfernen Sie dann mit den neuen Berechtigungen hinzufügen zurück:
> db.system.users.remove({"user":"testAdmin"})
> db.addUser({ user: "testAdmin",
pwd: "[whatever]",
roles: [ "clusterAdmin" ],
otherDBRoles: { TestDB: [ "readWrite", "dbAdmin" ] } })
Aber das scheint hacky und fehleranfällig.
Und ich kann die Tabelle Datensatz aktualisiert selbst:
> db.system.users.update({"user":"testAdmin"}, {$set:{ otherDBRoles: { TestDB: [ "readWrite", "dbAdmin" ] }}})
Aber ich bin nicht sicher, ob das wirklich die richtigen Berechtigungen schafft - es sieht gut aus, aber es kann auf subtile Weise falsch sein.
Gibt es einen besseren Weg, dies zu tun?
Liest der MongoDB-Berechtigungsüberprüfer bei jedem Zugriff aus der Datenbank oder wird er zwischengespeichert? –
Bei jedem Zugriff. Siehe Aktualisierungsteil in Antwort. –
Schöne Antwort, es fehlt jedoch ein kleines Stück: db.system.users.update ({"user": "testAdmin"}, {$ addToSet: {'andereDBRoles.TestDB': 'dbAdmin'}}, false, false) (Verwenden Sie db.system.users not db.users) –