Frage MongoDB super-admin authentifiziert gut, aber immer noch nicht autorisierte Abfragefehler?


Ich habe begonnen, MongoDB mit Authentifizierung zu verwenden. Laut der Dokumentation habe ich die localhost-Ausnahme verwendet, um einen Admin-Benutzer mit der einzigen Rolle von zu erstellen userAdminAnyDatenbank. Das alles ging gut. Wenn ich den "Mongo" -Client betreibe und gegen den Administrator Datenbank nach verwenden Diese Datenbank bekomme ich die Nummer 1 zeigt an, dass die Autorisierung erfolgreich war. Jeder Befehl, den ich ausführen möchte, führt jedoch zu einem "nicht autorisierten" Fehler, sogar wenn ich versuche, die Sammlungen in der Admin-Datenbank anzuzeigen, gegen die ich gerade autorisiert habe.

Kann mir jemand sagen, warum das so ist und wie ich es beheben kann? Momentan laufe ich ohne Authentifizierung bis ich das beheben kann.


4
2017-08-25 01:01


Ursprung




Antworten:


Das userAdminAnyDatabase Rolle (und die userAdmin Rolle, dass es eine Erweiterung von) ist, gibt Ihrem Benutzer einfach die Erlaubnis zu lesen und zu schreiben system.users Sammlung zur Verwaltung der Benutzer einer Datenbank. Es erlaubt dem Benutzer nicht, zu den tatsächlichen Sammlungen der Datenbank zu lesen oder zu schreiben. Dafür müssen Sie den read oder readWrite Rollen.

Sehen Benutzerberechtigungsrollen in MongoDB und Fügen Sie einen Benutzer zu einer Datenbank hinzu.


4
2017-09-03 09:21





Versuchen Sie, die nächsten Schritte auszuführen, um das Authentifizierungsproblem zu lösen:

  1. starte mongod ohne Authentifizierung aktiviert und starte:
  2. Datenbank erstellen
  3. Benutzer mit Rolle erstellen
  4. Erstellen Sie eine Dummy-Sammlung mit einem Dokument
  5. Stoppt / tötet Mongod
  6. Starten Sie Mongod mit aktivierter Authentifizierung
  7. Wechseln Sie zu der in Schritt 1 erstellten Datenbank
  8. authentifizieren Sie sich bei der Datenbank mit dem Benutzer, der in Schritt 3 erstellt wurde

Beispielbefehle:

  1. mongod --port 27017 --dbpath /data/db1
  2. use educationDb;
  3. db.createUser({ user : 'readonly', pwd: 'readonly', roles : ['read']})
  4. db.xyz.insert({"name":"nix.education"})
  5. Stoppt / tötet Mongod
  6. mongod --auth --port 27017 --dbpath /data/db1
  7. use educationDb;
  8. db.auth('readonly','readonly')

0
2017-07-07 08:25