it-swarm.com.de

Wie kann ich Mongo als Superuser eingeben oder Benutzer zurücksetzen?

Ich habe mit Berechtigungen herumgespielt und mich aus der Mongo-Datenbank ausgeschlossen. Ich bin mir ziemlich sicher, dass ich versucht habe, explizit Zugriff auf eine Datenbank hinzuzufügen, aber stattdessen habe ich nur die Erlaubnis für die Datenbank überschrieben. Ich bin also effektiv von meiner Mongo-Datenbank ausgeschlossen und alles, was ich lese, sagt mir, wie ich einen Superuser erstellen kann, wenn ich die Berechtigung zum Hinzufügen von Benutzern habe. Im Moment glaube ich nicht, dass ich Benutzer habe, die dieses Privileg haben. Gibt es eine Möglichkeit, die Datenbank als Gesamtzugriff einzugeben? Ich besitze den Server und habe Root-Zugriff.

31
Tony

Wenn Sie sich ausgesperrt haben, müssen Sie Folgendes tun:

  1. Stoppen Sie Ihre MongoDB-Instanz
  2. Entfernen Sie die Optionen --auth und/oder --keyfile aus Ihrer MongoDB-Konfiguration, um die Authentifizierung zu deaktivieren
  3. Starten Sie die Instanz ohne Authentifizierung
  4. Bearbeiten Sie die Benutzer nach Bedarf
  5. Starten Sie die Instanz mit aktivierter Authentifizierung neu
39
daveh

Ich hatte ein ähnliches Problem, als ich einen Benutzer erstellte, ohne vorher einen Superuser hinzuzufügen. Die folgenden Schritte haben zur Lösung des Problems beigetragen:

  1. Öffnen Sie die MongoDB-Konfigurationsdatei mit Sudo (Sudo vi mongodb.conf).
    Die Datei befindet sich in /etc/ Mappe.
  2. Kommentar "auth = true".
  3. Beenden Sie den MongoDB-Dienst (Sudo service mongod stop)
  4. Starten Sie den MongoDB-Dienst (Sudo service mongod start)
  5. Erstellen Sie dann den "root" -Superuser mit dem folgenden Befehl:

    use admin
    
    db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]});
    

    Als Referenz https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. Geh zurück und kommentiere "auth=true". Stoppen Sie den Mongodb-Dienst und starten Sie ihn neu.

16
Divya Krishnan

Wenn Sie ein Replikatset mit einem keyfile verwenden

Sicherheit zwischen Mitgliedern des Replikatsatzes mithilfe der internen Authentifizierung

Die Schlüsseldatei wird für die Authentifizierung bei der Replikation verwendet.

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

Mit diesem Befehl können Sie sich als Administrator bei mongod anmelden:

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

Nach dem Wort können Sie Ihren Administrator erstellen oder ändern.

Interne Rolle

__system MongoDB weist diese Rolle Benutzerobjekten zu, die Clustermitglieder darstellen, z. B. Replikatsatzmitglieder und Mongos-Instanzen. Die Rolle berechtigt ihren Inhaber, Maßnahmen gegen ein Objekt in der Datenbank zu ergreifen.

Weisen Sie diese Rolle nur in Ausnahmefällen Benutzerobjekten zu, die Anwendungen oder menschliche Administratoren darstellen.

7
Ivanov

Überprüfen Sie die Antworten auf diese Frage, sie könnten helfen

https://stackoverflow.com/questions/20117104/mongodb-root-user

Wenn Sie noch Zugriff auf den Server haben, können Sie möglicherweise auf die Datenbank Admin zugreifen.

Es gibt mehr auf dieser Seite http://docs.mongodb.org/v2.4/reference/user-privileges/

Beachten Sie, dass die Version 2.6 die Funktionsweise vollständig ändert. Für 2.6 müssen Sie mehr Zeit mit http://docs.mongodb.org/manual/security/ verbringen

2
Meligy

Sie müssen Mongo stoppen, die Admin-Dateien entfernen und dann Mongo starten

Sudo service mongod stop
mv /data/admin.* .
Sudo service mongod start
0
Tony