Szenario: Installiert MongoDB 2.2.3 auf dem Rechner (Windows 64-Bit)
Alle Schritte zur Erzwingung der Authentifizierung auf dem MongoDB-Server befolgt.
-
Benutzer zur admin-Datenbank hinzugefügt
use admin db.addUser('me_admin', '12345'); db.auth('me_admin', '12345');
-
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:
-
Wenn die
mongod.cfg
-Datei folgende Konfigurationen enthältlogpath=c:\mongodb\log\mongo.log, auth=true, profile=2
Die Datei
log.txt
enthält folgende ProtokolleMon 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
-
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:
-
Optionen:{ config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true }
//Funktioniert nicht -
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