4 Stimmen

MongoDB bietet ein einfaches Authentifizierungssystem. Hat es sich in Version 2.2.3 geändert?

Szenario: Installiert MongoDB 2.2.3 auf dem Rechner (Windows 64-Bit)

Alle Schritte zur Erzwingung der Authentifizierung auf dem MongoDB-Server befolgt.

  1. Benutzer zur admin-Datenbank hinzugefügt

    use admin
    db.addUser('me_admin', '12345');
    db.auth('me_admin', '12345');
  2. Datenbankserver (mongod.exe-Prozess) mit der Option --auth ausgeführt, um die Authentifizierung zu aktivieren

Alle Antworten auf ähnliche Frage befolgt: Wie man MongoDB mit Benutzername und Passwort absichert

Problem: Mit der neuen Version 2.2.3 kann ich die Authentifizierung nicht einrichten. Nachdem ich die gleichen Schritte befolgt habe, konnte ich die Authentifizierung für die Version 2.0.8 auf demselben Rechner einrichten. irgendwo in den MongoDB-Dokumenten wird jedoch erwähnt, dass "Die Authentifizierung auf Localhost sich leicht zwischen vor und nach Version 2.2 unterscheidet"

Frage: Was ist die Änderung und wie kann die Authentifizierung in den neuen Versionen ab 2.2 erzwungen werden? Kann jemand eine Idee oder Lösung geben, um dasselbe mit dem neuen MongoDB 2.2.3 fortzusetzen?


Aktualisierung: Ich habe festgestellt, dass die Authentifizierung in 2.2.3 funktioniert, wenn ich den mongod.exe Prozess mit dem Parameter --auth von der Eingabeaufforderung starte.

Ich habe den Parameter auth=true in der Konfigurationsdatei verwendet, wie in den Dokumenten erwähnt, aber das hat nicht funktioniert.

Durchgeführte Recherche:

  1. Wenn die mongod.cfg-Datei folgende Konfigurationen enthält

    logpath=c:\mongodb\log\mongo.log, auth=true, profile=2

    Die Datei log.txt enthält folgende Protokolle

    Mon Mar 11 15:06:35 Versuche, den Windows-Dienst 'MongoDB' zu starten
    Mon Mar 11 15:06:35 Dienst läuft
    Mon Mar 11 15:06:35 [initandlisten] MongoDB startet: pid=7152 port=27017 dbpath=\data\db\ 64-Bit-Host=AMOL-KULKARNI
    Mon Mar 11 15:06:35 [initandlisten] db-Version v2.2.3, pdfile-Version 4.5
    Mon Mar 11 15:06:35 [initandlisten] git-Version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
    Mon Mar 11 15:06:35 [initandlisten] Build-Info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
    Mon Mar 11 15:06:35 [initandlisten] Optionen: { config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true }
    Mon Mar 11 15:06:35 [initandlisten] Journal-Verzeichnis=/data/db/journal
    Mon Mar 11 15:06:35 [initandlisten] Warte auf Verbindungen auf Port 27017
    Mon Mar 11 15:06:35 [websvr] Admin-Webkonsole wartet auf Verbindungen auf Port 28017
  2. Wenn ich von der Eingabeaufforderung aus mongod --auth ausführe, wird folgendes Protokoll angezeigt:

        Mon Mar 11 15:09:40 [initandlisten] MongoDB startet: pid=6536 port=27017 dbpath=\data\db\ 64-Bit-Host=AMOL-KULKARNI
        Mon Mar 11 15:09:40 [initandlisten] db-Version v2.2.3, pdfile-Version 4.5
        Mon Mar 11 15:09:40 [initandlisten] git-Version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
        Mon Mar 11 15:09:40 [initandlisten] Build-Info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
        Mon Mar 11 15:09:40 [initandlisten] Optionen: { auth: true }
        Mon Mar 11 15:09:40 [initandlisten] Journal-Verzeichnis=/data/db/journal
        Mon Mar 11 15:09:40 [initandlisten] Warte auf Verbindungen auf Port 27017
        Mon Mar 11 15:09:40 [websvr] Admin-Webkonsole wartet auf Verbindungen auf Port 28017

Hinweis: Die Änderung in den Optionen:

  1. Optionen:{ config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true } //Funktioniert nicht

  2. Optionen: { auth: true } //Funktioniert

Interessant zu beobachten ist,

Wenn es von der Konfigurationsdatei aus ausgeführt wird.

logpath=c:\mongodb\log\mongo.log, auth=true, profile=2

Wird geändert zu:

logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true

Ich weiß hier liegt das Problem. Es sollte so sein:

logpath: "c:\mongodb\log\mongo.log", auth=true, profile="2", service: true

Die Frage ist also, wie man den Parameter auth=true von der Konfigurationsdatei weitergeben und den mongod.exe-Prozess als Dienst unter Windows7 ausführen kann

2voto

Sammaye Punkte 41960

Die Änderung ist nur geringfügig, wie im von Ihnen zitierten Teil beschrieben:

Im Allgemeinen können Sie sich über die localhost-Schnittstelle verbinden, wenn es keine Benutzer für die Admin-Datenbank gibt. Für verteilte Cluster ab Version 2.2, wenn mongod mit Authentifizierung läuft, müssen sich alle Benutzer, die über die localhost-Schnittstelle eine Verbindung herstellen, authentifizieren, auch wenn es keine Benutzer in der Admin-Datenbank gibt.

Grundsätzlich konnten Sie vor 2.2 in einem verteilten Cluster eine Verbindung zu localhost herstellen und mussten sich nicht authentifizieren, wenn keine Benutzer in der Admin-Datenbank gefunden wurden. Das bedeutet, dass es ratsam sein könnte, einen Standardbenutzer einzurichten, was Sie bereits getan haben.

Kann jemand eine Idee oder Lösung geben, um mit dem neuen MongoDB 2.2.3 fortzufahren?

Das neue Authentifizierungssystem wird einfach vorhanden sein, Sie müssen nichts tun; es wird einfach sein.

0voto

Amol M Kulkarni Punkte 20152

Die Lösung wurde gefunden.

Um den MongoDB-Prozess (mongod.exe) als Dienst mit auth=true zu starten, muss beim Registrieren des MongoDB-Dienstes selbst (nicht in den Dokumenten) folgendes beachtet werden:

Der Dienst muss mit folgendem Befehl registriert werden:

C:\mongodb\bin\mongod.exe --config C:\mongodb\mongod.cfg --auth --install

Die Datei mongod.cfg enthält nur logpath=c:\mongodb\log\mongo.log

Teile es mit euch allen, damit keine Anstrengungen und Zeit für dasselbe Problem aufgewendet werden müssen.

Viel Erfolg bei der Erkundung.. :-)

Beachte diesmal enthält das Log:

Mon Mar 11 15:58:06 Trying to start Windows service 'MongoDB'
Mon Mar 11 15:58:06 Service running
Mon Mar 11 15:58:06 [initandlisten] MongoDB starting : pid=6800 port=27017 dbpath=\data\db\ 64-bit host=AMOL-KULKARNI
Mon Mar 11 15:58:06 [initandlisten] db version v2.2.3, pdfile version 4.5
Mon Mar 11 15:58:06 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Mon Mar 11 15:58:06 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
Mon Mar 11 15:58:06 [initandlisten] options: { auth: true, config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log", service: true }
Mon Mar 11 15:58:06 [initandlisten] journal dir=/data/db/journal
Mon Mar 11 15:58:06 [initandlisten] recover : no journal files present, no recovery needed
Mon Mar 11 15:58:06 [initandlisten] waiting for connections on port 27017
Mon Mar 11 15:58:06 [websvr] admin web console waiting for connections on port 28017

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X