Was MongoDB user-Berechtigungen brauche ich, um einen Benutzer hinzufügen, um einen neuen/anderen mongo-Datenbank?
Habe ich aktiviert, die Authentifizierung in der MongoDB config-Datei nach dem hinzufügen eines admin-Benutzer mit den folgenden Berechtigungen: userAdmin
und userAdminAnyDatabase
.
Nun habe ich eine Verbindung mit diesem Benutzer an der db, wo dieser admin-Benutzer definiert ist (sonst bekomme ich exception: login failed
).
Nachdem ich erfolgreich angeschlossen haben, die ich hinzufügen möchten Sie einen neuen Benutzer in eine neue Datenbank. Dafür bin ich versucht:
use another
db.addUser(...)
aber ich bekomme eine Fehlermeldung:
Wed Dec 11 17:45:18.277 couldn't add user: not authorized for insert on app.system.users at src/mongo/shell/db.js:128
Wie kann ich eine neue Datenbank erstellen und hinzufügen eines ersten Nutzer?
Detaillierte (alle Benutzer 1234 als Passwort in diesem Beispiel)
$ mongo mono -u admin_all -p 1234
MongoDB shell version: 2.4.6
connecting to: mono
> db.system.users.find()
{ "_id" : ObjectId("52a9831de41eb640bb0f5f64"), "user" : "admin_all", "pwd" : "a6316ed4886c10663cce46bc216ea375", "roles" : [ "userAdmin", "userAdminAnyDatabase" ] }
{ "_id" : ObjectId("52a98404ef1f9bc934b62e11"), "user" : "admin_one", "pwd" : "884f516cf308a4c6a75bbc5a0a00807b", "roles" : [ "userAdmin" ] }
{ "_id" : ObjectId("52a98415ef1f9bc934b62e12"), "user" : "admin_any", "pwd" : "1616611df9b47c58b607054d384cab99", "roles" : [ "userAdminAnyDatabase" ] }
> use another
switched to db another
> db.addUser({ user: "user", pwd: "1234", roles: ["read"] })
{
"user" : "user",
"pwd" : "461d4f349d8d4ec3d22a4c945010c330",
"roles" : [
"read"
],
"_id" : ObjectId("52a985372fcdbfd033003a7e")
}
Thu Dec 12 10:43:19.091 couldn't add user: not authorized for insert on another.system.users at src/mongo/shell/db.js:128
InformationsquelleAutor der Frage Gabriel Petrovay | 2013-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler machte, war, dass ich mit einem
userAdminAnyDatabase
Benutzer, dass war NICHT in der admin Datenbank (siehe dieser Hinweis). So gibt es MUSS eine Datenbank namens admin auf Ihrem server! Wie die Dokumentation sagt, für die "AnyDatabase" Privilegien:So müssen Sie:
hinzufügen
userAdminAnyDatabase
zu denadmin
dbaktivieren Sie die Authentifizierung
Verbindung mit der neuen
myadmin
Benutzer zu einer Datenbank, die Sie möchten, und fügen Sie weitere Benutzer:oder
InformationsquelleAutor der Antwort Gabriel Petrovay