2016-10-20 3 views
1

Meine Datenbank ist in mlab.com gehostet und ich habe versucht, es mit mongodb C# -Treiber zu verbinden, aber ich bekomme folgende Ausnahme, wenn ich versuche, eine Verbindung mit der MLAB-Datenbank.MongoDB C# Authentifizierung Ausnahme

MongoCommandException: Befehl 'saslStart' fehlgeschlagen: Authentifizierung fehlgeschlagen. (Antwort: {"ok": 0.0, "code": 18, "errmsg": "Authentifizierung fehlgeschlagen."}) MongoDB.Driver.Operations.CommandOperation`1 [MongoDB.Driver.CommandResult] .Execute (MongoDB.Driver. Intern.MongoConnection-Verbindung) MongoDB.Driver.Communication.Security.SaslAuthenticationProtocol.RunCommand (MongoDB.Driver.Internal.MongoConnection-Verbindung, System.String-Datenbankname, IMongoCommand-Befehl) MongoDB.Driver.Communication.Security.SaslAuthenticationProtocol.Authenticate (MongoDB.Driver. Intern.MongoConnection-Verbindung, MongoDB.Driver.MongoCredential-Anmeldedaten) Retrow als MongoSecurityException: Fehler: 18 - Authentifizierung fehlgeschlagen. MongoDB.Driver.Communication.Security.SaslAuthenticationProtocol.Authenticate (MongoDB.Driver.Internal.MongoConnection-Verbindung, MongoDB.Driver.MongoCredential-Anmeldedaten) MongoDB.Driver.Communication.Security.Authenticator.Authenticate (MongoDB.Driver.MongoCredential-Anmeldedaten) MongoDB.Driver .Communication.Security.Authenticator.Authenticate() MongoDB.Driver.Internal.MongoConnection.Open() MongoDB.Driver.Internal.MongoConnection.GetNetworkStream() MongoDB.Driver.Internal.MongoConnection.SendMessage (MongoDB.Bson.IO.BsonBuffer-Puffer , Int32 requestId) Reethrow als MongoConnectionException: Verbindung zum Server konnte nicht hergestellt werden dsXXXXXX.mlab.com:XXXXX: Fehler: 18 - Authentifizierung fehlgeschlagen. MongoDB.Driver.Internal.DirectMongoServerProxy.Connect (TimeSpan-Zeitlimit, MongoDB.Driver.ReadPreference readPreference) MongoDB .Driver.MongoServer.Connect (TimeSpan-Timeout) MongoDB.Driver.MongoServer.Connect()

Unten ist die Zeile, die den Fehler auslöst.

client = new MongoClient (new  MongoUrl("mongodb://:@dsxxxxx.mlab.com:xxxxx/mydb")); 

Und der db Benutzer hat auch Admin-Rechte ... Benutzername und Passwort sind correct..Need auch etwas Hilfe :-)

+1

korrekt Mongo uri Syntax: mongodb: // username: password @ host: port/dbname. Sie müssen nicht übergeben: @, wenn Sie nicht Auth aktiviert haben. Versuchen Sie es mit: mongodb: //dsxxxxx.mlab.com: xxxxx/mydb statt –

+0

Auf dem ** mlab **, wenn Sie zur Datenbank gehen, werden beide Verbindungszeichenfolgen angezeigt. Eine in der Schale zu verwenden, die andere mit Treibern. Können Sie den Benutzernamen und das Kennwort des Datenbankbenutzers kopieren und einfügen, den Sie nach dem Erstellen der Datenbank erstellt haben? –

Antwort

0

I

var connStr = "mongodb://[username]:[password]@dsxxxx.mongolab.com:xxxx/[dbname]" 
IMongoClient client = new MongoClient(connStr); 

Hinweis verwenden mongolab.com anstelle von mlab.com habe ich mich gerade bei mlab eingeloggt und der vorgeschlagene verbindungsstring verwendet mongolab.com für mich, also überprüfe deine. Sie sollten sie sehen, sobald Sie sich bei mlab anmelden und Ihre Datenbank auswählen.

Beachten Sie, dass die Verbindungszeichenfolge wird anders sein, wenn Sie zu einem replicaset verbinden

+0

Vielen Dank für Ihre Antwort. Ich bekomme immer noch den gleichen Fehler. Meine Verbindungszeichenfolge schlägt mlab.com vor und könntest du mir bitte sagen, muss ich irgendwelche dbuser Erlaubnis ändern? Ich kann sogar keine Verbindung mit Mongoshell .. Es verbindet sich nicht mit der db – user2397555

+0

Haben Sie einen Datenbankbenutzer eingerichtet? Ihre Zugangsdaten entsprechen nicht denen Ihres mlab-Logins. Sie müssen einen Benutzer für die Datenbank – pieperu

+0

erstellen Ich verwende unten Befehl von Mongoshell% Mongo dsxxxxxx.mlab.com:xxxxx/dbname -u -p aber es sagt Syntaxfehler fehlt; vor Aussage @ (Shell): 1: 6 – user2397555