2016-03-18 9 views
22

Ich habe eine Parse-App, und ich versuche, die App-Datenbank zu einer MongoDB-Instanz auf mLab zu migrieren.Verbindung zur MongoDB-Datenbank in mLab schlägt fehl Authentifizierung

Ich habe bereits eine Abzweigung von Parse Server auf Heroku eingerichtet, und ich verwende Heroku mLab MongoDB Add-on.

Ich habe eine Datenbank auf mLab heroku_1ksph3jj genannt, und ich sollte es mit der folgenden Vorlage verbinden können:

mongodb://<dbuser>:<dbpassword>@ds047124.mlab.com:47124/heroku_1ksph3jj

jedoch jeder Versuch liefert:

Server returned error on SASL authentication step: Authentication failed.

Ich bin mir nicht sicher, was ich ersetzen soll <dbuser> und <dbpassword> mit. Ich habe einen Datenbankbenutzer mit dem gleichen Namen wie meine Datenbank: heroku_1ksph3jjz, also habe ich das benutzt. Und ich habe das Passwort für diesen Benutzer anstelle von <dbpassword> verwendet. Hätte ich etwas anderes hier benutzen sollen?

Antwort

39

Sie können die dbuser und dbpass mit bekommen:

heroku config | grep MONGODB_URI

greifen die dbuser (example_user) und dbpass (example_pass) aus der Antwort:

MONGOLAB_URI: mongodb://example_user:[email protected]:12345/db

+1

Großen Dank. Dies ist eine bessere Lösung, als nur einen neuen Datenbankbenutzer zu erstellen, wenn Sie Ihr Passwort vergessen haben. – AdColvin

+0

Am 15.07.2016 ist es jetzt 'heroku config | grep MONGODB_URI' –

2

Es sieht so aus, als wäre das Passwort falsch, was vermutlich von Herokus mLab-Add-on übernommen wurde. Es gab keine offensichtliche Möglichkeit, dies in der mLab UI zurückzusetzen, also habe ich am Ende einen anderen Datenbankbenutzer (mit einem neuen Benutzernamen und einem neuen Passwort) erstellt und konnte mich damit gut verbinden.

10

Ab März 2016 , mab.com unterstützt nur mongo 3.0+ (gemäß einer Konversation mit Unterstützung), wegen ihrer neuen lästigen Authentifizierungsanforderungen.

Dies war nicht auf der Website, aber ich hoffe, es hilft jemand hier!

+0

Aber gibt es eine Lösung? –

+1

Meine Lösung war, auf eine faule Dev-Box zu gehen, die ich woanders hatte, den mongo 3+ Client herunterzuladen (auf Centos 7 ist es wirklich einfach) und nicht meinen täglichen Mac zu beschmutzen! Hoffe, dass hilft :) – lol

+0

Es hat definitiv geholfen, derzeit die Mongo-Version auf Ubuntu Standards PPA ist 2.6, würde ich nie Authentifizierung auch mit korrekten Anmeldeinformationen passieren, danke eine Tonne dafür! – Miguelgraz

3

Ich bin so traurig, dass dies aber offensichtlich erscheinen mag, müssen Sie diese Zeichen entfernen <> für die Migration

In Ihrem Beispiel arbeiten würde wie folgt aussehen: mongodb: // dbuser: [email protected]: 47124/heroku_1ksph3jj

+0

Danke, ich habe nur diese dort zu zeigen, dass der Benutzer und das Passwort Platzhalter waren. Ich habe sie entfernt, bevor ich eine Verbindung hergestellt habe. – AdColvin

+1

das ist die richtige Antwort. Ernsthaft danke. Keine Ahnung warum alle anderen über Versionen reden. Danke! – Ibdakine

3

Überprüfen Sie Ihre Mongo-Client-Version. Wenn es bei älterer Hauptversion (wahrscheinlich 2.x) ist, aktualisieren Sie es

+0

Das ist es. Danke für den Hinweis. –

7

auf 3.x Es gibt eine Nachricht einen Benutzer für die spezifische Datenbank zu erstellen: Ein Datenbankbenutzer ist erforderlich, um diese Datenbank zu verbinden. Um jetzt einen zu erstellen, finden Sie auf der Registerkarte ‚Benutzer‘ und klicken Sie auf Hinzufügen Datenbank Benutzer-Taste

2

Für zukünftige Besucher - verwenden Sie keine Sonderzeichen in Passwort .Auch wenn Sie das Sonderzeichen ändern ascii oder unicode es funktioniert nicht für mLab mit mongoose.

Verwenden Sie auch keine mLab-Anmeldeinformationen, verwenden Sie die Anmeldeinformationen der db-Benutzer. Ich habe einen neuen Benutzer erstellt.

Eg. Für mich ist ein Passwort @ Zeichen enthält, wurde mit ascii Wert % 40 in URI ersetzt, die, wenn sie nativenmongodb Treiber gearbeitet. Aber bei der Verwendung von Mungo, bekam ich immer Authentifizierung fehlgeschlagen. Ich entfernte Sonderzeichen und db wurde über Mungo authentifiziert.

+1

Ich hatte auch versucht, ein Passwort mit einem @, und die Verbindung fehlgeschlagen. Dies ist immer noch ein Problem! – jessi