2017-01-09 5 views
0

Ich habe einen Benutzer in der Admin-Datenbank erstellt, der die Rolle "userAdminAnyDatabase" in der Admin-Datenbank hat. Die Zugriffsebene funktioniert gut beim Versuch, die Datenbanken zur Liste (mit der show databases Befehl), sondern führt den folgenden Fehler, wenn ich die zeigen Sammlungen Befehl auf einer anderen Datenbank als Admin ausführen. Hier ist der FehlerEinen MongoDB-Benutzer mit Zugriff auf zusätzliche Datenbanken versorgen

Error: listCollections failed: { "ok" : 0, "errmsg" : "not authorized on xxxx to execute command { listCollections: 1.0, filter: {} }", "code" : 13, "codeName" : "Unauthorized"

Ich habe versucht, den Benutzer zu aktualisieren, Zugriff zu ermöglichen mit dem folgenden Befehl:

db.updateUser("xyz",{pwd:"abcd",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"employee"}]})

ich die folgende Fehlermeldung erhalten:

Error: couldn't add user: No role named [email protected]

Muss ich hinzufügen die Rollen speziell in jeder Datenbank, damit dies funktioniert?

Antwort

0

Mit userAdminAnyDatabase Rolle können Sie Benutzer verwalten; Diese Rolle kann jedoch keine Daten aus Anwendungsdatenbanken/-sammlungen lesen/schreiben.

Für Schreib-/readwrite Betrieb entweder erstellen Benutzer auf Datenbank mit read/readWrite Rolle oder Sie können readAnyDatabase/readWriteAnyDatabase Rolle auf den Admin-Benutzer hinzuzufügen.

+0

Ich habe das funktioniert. Was ich aus Ihrer obigen Erklärung verstehe und unsere Lösung ist, dass die Rolle userAdminAnyDatabase nur in der Admin-Datenbank vorhanden ist, aber diesem Benutzer das Recht gibt, Benutzer in jeder Datenbank zu verwalten. Wir müssen noch Benutzer in der Datenbank anlegen, in die wir schreiben wollen. Das Konzept, alle Benutzer in einer zentralen Datenbank zu haben, denen Lese-/Schreibzugriff auf andere Datenbanken gewährt wird, scheint in Mongo nicht vorhanden zu sein. – kl27driver

Verwandte Themen