Der Server hat beim SASL-Authentifizierungsschritt einen Fehler zurückgegeben: Die Authentifizierung ist fehlgeschlagen

76

Das Folgende ist meine MongoDB-Verbindungswahl von GoLang. Es wird jedoch eine Panik zurückgegeben: "Der Server hat beim SASL-Authentifizierungsschritt einen Fehler zurückgegeben: Authentifizierung fehlgeschlagen. " Mein Benutzername, Passwort, hostAddrs und dbName sind korrekt. Was fehlt mir hier?

dbName: = os.Getenv("ENV_DBNAME")
userName: = os.Getenv("ENV_DBUSER")
password: = os.Getenv("ENV_DBPASS")
dbHost: = os.Getenv("ENV_DBHOST")
mongoDialInfo: = & mgo.DialInfo {
 Addrs: [] string {
  dbHost
 },
 Database: dbName,
 Username: userName,
 Password: password,
 Timeout: 60 * time.Second,
}
sess, err: = mgo.DialWithInfo(mongoDialInfo)
if (err != nil) {
 panic(err)

}
Arjun Ajith
quelle

Antworten:

163

Ich hatte einen ähnlichen Fehler und fügte --authenticationDatabaseParameter hinzu und es funktionierte, während wir eine Verbindung zu einer entfernten MongoDB herstellten

Verwenden Sie das folgende Format in Ihrem Code:

$mongorestore --host databasehost:98761 --username restoreuser
--password restorepwd --authenticationDatabase admin --db targetdb ./path/to/dump/
Anantha
quelle
1
Danke, in meinem Fall war das genau die Lösung.
Rav
2
Ich bin verwirrt ... was ist der Parameter --authenticationDatabase? den Namen der Datenbank, auf die Sie zugreifen möchten?
Vabm
1
In meinem Fall hatte ich nur Zugriff auf eine Datenbank auf dem Server. Also musste ich nur die -d <dbname>Option hinzufügen . Keine Notwendigkeit --authenticationDatabasefür mich
Alaster
Es ist der richtige Rat, aber ich hatte ein '%'-Zeichen in meinem Passwort und im cmd.exe-Skript ist das Zeichen verschwunden. Ich hatte den gleichen Fehler =)
Pax Beach
Ich hatte ein ';' in meinem Passwort!
Bruno Fernandes
15

Oft haben wir den Parameter im Befehl mongoexport mit dem Benutzer "Log-In" verwechselt. Der Befehl erwartet "Datenbank-Benutzername", nicht Anmeldenamen. Dies ist eine Möglichkeit, einen falschen Benutzernamen einzugeben. "Datenbankbenutzername" finden Sie auf der Registerkarte "Benutzer" für eine Datenbank

Geomy George
quelle
2
In meinem Fall habe ich mein mLab-Passwort anstelle des db-Passworts verwendet. Dummer Fehler, aber diese Antwort hat mir geholfen, es herauszufinden!
Ahaurat
7

Ich habe meine Antwort von diesem Link erhalten: https://newbiedba.wordpress.com/2016/11/21/mongodb-3-2-server-returned-error-on-sasl-authentication-step-authentication-failed/

Abgesehen von allen oben genannten Antworten ist der einzige nicht erwähnte Grund, dass mein Passwort ein Sonderzeichen '$' enthält. Ich denke, dies ist eine sehr verbreitete Praxis, um Sonderzeichen zu haben, und dies kann viele ohne diesen einfachen Tipp auslösen:

Bei Verwendung der Befehlszeile mongo / mongostat / etc .. Geben Sie einfach Ihren Benutzernamen oder Ihr Passwort mit Sonderzeichen an!

Michael Shang
quelle
Genau mein Problem. Vielen Dank.
Zach B.
tl; dr "Um das Problem zu lösen, zitieren Sie einfach das Passwortfeld in einfache Anführungszeichen." zB -p 'Passwort'
Andrei Radulescu
Vielen Dank, ich hatte eine, &die das Problem verursachte
Jack
4

mgodiesen Fehler zurück , wenn username, passwordoder databasesind falsch. Überprüfen Sie Ihre Anmeldeinformationen zweimal. Es gibt keine anderen Situationen, in denen eine Authentication failedFehlermeldung angezeigt wird.

CrazyCrow
quelle
Der Server hat beim SASL-Authentifizierungsschritt einen Fehler zurückgegeben: Die Authentifizierung ist fehlgeschlagen. Panik: Laufzeitfehler: ungültige Speicheradresse oder Nullzeiger-Dereferenzierung Panik: Laufzeitfehler: Ungültige Speicheradresse oder Nullzeiger-Dereferenzierung
Arjun Ajith
1
Ja, dies ist der richtige Weg, um die Verbindung zu implementieren. Hier ist der Arbeitscode gist.github.com/bearburger/718dec31746762684a7a512aed992a37 , der die Demo-DB verbindet.
CrazyCrow
1

Der Fehler, den Sie melden, scheint die Ursache für den Authentifizierungsfehler zu sein, der durch einen Nullzeiger verursacht wird. Sie sollten die Daten überprüfen, bevor Sie sie zum Herstellen der Verbindung verwenden

Bestbug
quelle
2
Ich weiß nicht, wie der Wähler Sie verstanden hat, aber ich bin sicher, ich habe nichts von Ihrer Antwort verstanden. Möchten Sie mehr ausarbeiten ...?
rrw
Nun, nach mehr als einem Jahr weiß ich nicht genau, was ich dachte. Wahrscheinlich war meine Idee, dass die Golang-Anwendung eine oder mehrere env_variable nicht vom Host abrufen kann.
Bestbug
1

Ich habe diesen Fehler erhalten, als ich eine Verbindungszeichenfolge aus einer Heroku-App mithilfe des --uriFlags verwendet habe. Was es in meinem Fall gelöst hat, war das Hinzufügen des Datenbanknamens mit -d:

mongodb_uri="$(heroku config:get MONGODB_URI -a myapp)"
mongorestore --uri=$mongodb_uri -d heroku_7m41q4xs db/
e18r
quelle
0

Ich hatte den gleichen Fehler bei der Verwendung mit Dokku Mongo: Import. In meinem Fall habe ich Punkt (Punkt) in meinen Datenbanknamen aufgenommen

Sie sollten keinen Punkt in Ihren Mongodb-Namen aufnehmen, wenn 'dokku mongo: create'. Ich habe ihn in seunghunlee anstelle von seunghunlee.net geändert, jetzt funktioniert dieser Befehl

dokku mongo:import seunghunlee < seunghunlee.net.dump.gz

Ich hoffe es hilft!

Seunghun Sunmoon Lee
quelle