Ich versuche, einen einfachen Benutzer mit der Berechtigung zum Zugriff auf eine Datenbank zu erstellen, der alle Aktionen ausführen kann. Beim Versuch, den createUser
Befehl auszuführen, ist folgender Fehler aufgetreten:
db.createUser({ user: "mongoadmin" , pwd: "mongoadmin", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})
2015-08-20T17:09:42.300+0000 E QUERY Error: couldn't add user: No role named userAdminAnyDatabase@new_vehicles_catalog
Das obige Problem tritt nur auf, wenn ich die Authentifizierungskonfiguration aktiviere und diese benötige.
Wie erstelle ich einen Benutzer mit Administratorrechten für eine Datenbank? Ich möchte es, weil ich meine Mongo-Dienste so konfiguriert habe, dass sie eine Authentifizierungsverbindung verwenden. Wenn ich einen Dump meiner Daten ausführen möchte, muss ich diese Authentifizierungsparameter verwenden.
Bitte irgendeine Hilfe?
Verwenden von Mongo Version 3.0.5 .
Der Dienst läuft unter Amazon Linux AMI 2015.03 (HVM), SSD-Volume-Typ - ami-1ecae776
quelle
Gemäß
MongoDB BOL
Aktivieren Auth Mit Zugriffskontrolle aktiviert ist , sicherzustellen , dass Sie einen Benutzer mit haben Useradmin oder userAdminAnyDatabase Rolle in der Admin - Datenbank. Dieser Benutzer kann Benutzer und Rollen verwalten, z. B .: Benutzer erstellen, Rollen von Benutzern erteilen oder widerrufen sowie Zollrollen erstellen oder ändern.Sie können Benutzer erstellen, bevor oder nachdem Sie die Zugriffssteuerung aktiviert haben. Wenn Sie die Zugriffssteuerung aktivieren, bevor Sie einen Benutzer erstellen , stellt MongoDB eine localhost-Ausnahme bereit , mit der Sie einen Benutzeradministrator in der Admin-Datenbank erstellen können. Nach dem Erstellen müssen Sie sich als Benutzeradministrator authentifizieren, um nach Bedarf weitere Benutzer zu erstellen.
Verfahren
Hier ist das folgende Verfahren, mit dem Sie können
Enable Auth
. Fügt einer MongoDB-Instanz, die ohne Zugriffssteuerung ausgeführt wird, zunächst einen Benutzeradministrator hinzu und aktiviert dann die Zugriffssteuerung.Stellen Sie eine Verbindung zur Instanz her
Verbinden Sie beispielsweise eine
mongo
Shell mit der Instanz.Geben Sie gegebenenfalls zusätzliche Befehlszeilenoptionen an, um die
mongo
Shell mit Ihrer Bereitstellung zu verbinden , z--host
.Erstellen Sie den Benutzeradministrator
Fügen Sie hier in der Admin-Datenbank beispielsweise einen Benutzer mit der
userAdminAnyDatabase
Rolle hinzu. Folgendes erstellt beispielsweise den BenutzermyUserAdmin
in der Admin-Datenbank :Trennen Sie die
mongo
Shell.Starten Sie die MongoDB-Instanz mit Zugriffskontrolle neu
Starten Sie die
mongod
Instanz mit der Befehlszeilenoption --auth oder bei Verwendung einer Konfigurationsdatei mit der Einstellung security.authorization neu .Clients, die eine Verbindung zu dieser Instanz herstellen, müssen sich jetzt als
MongoDB
Benutzer authentifizieren . Clients können nur Aktionen ausführen, die von ihren zugewiesenen Rollen bestimmt werden.Stellen Sie eine Verbindung her und authentifizieren Sie sich als Benutzeradministrator
Mit der
mongo
Shell können Sie:Stellen Sie eine Verbindung zur Authentifizierung her, indem Sie Benutzeranmeldeinformationen eingeben, oder
Stellen Sie zuerst eine Verbindung ohne Authentifizierung her, und geben Sie dann die Methode db.auth () zur Authentifizierung aus.
So authentifizieren Sie sich während der Verbindung Starten Sie eine
mongo
Shell mit den-u <username>, -p <password>, and the --authenticationDatabase <database>
Befehlszeilenoptionen:Nach dem Verbinden authentifizieren
Verbinden Sie die
mongo
Shell mitmongod
:Wechseln Sie zur Authentifizierungsdatenbank (in diesem Fall admin) und verwenden Sie die Methode db.auth (,) , um Folgendes zu authentifizieren:
quelle