Ich habe kürzlich ein Konto in mongoLab erstellt. Wenn ich versuche, eine Verbindung zur Datenbank herzustellen, verwenden Sie die unten stehende Anweisung.
var mongoose = require('mongoose');
mongoose.connect('mongodb://mk:[email protected]:47742/mkdb');
Ich erhalte immer die folgende Fehlermeldung
MongoError: auth failed
at Function.MongoError.create (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)
at /Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:793:66
at Callbacks.emit (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:94:3)
at null.messageHandler (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:235:23)
at Socket.<anonymous> (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:259:22)
at Socket.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
at Socket.Readable.Push (_stream_readable.js:126:10)
at TCP.onread (net.js:538:20)
Stellen Sie sicher, dass Sie die Datenbank username
und password
verwenden, nicht das Konto username
und password
von Mlab.
In MLab, ehemals MongoLab, machen Sie Folgendes
Users
Add Database User
Jetzt können Sie dies mit .__ auf der Shell testen. mongo ds061374.mlab.com:61374/yourdb -u <dbuser> -p <dbpassword>
Mongolab hat seine 2.6.x-Datenbanken auf 3.0.x aktualisiert. Leider hat mongo3 einen anderen Authentifizierungsmechanismus, so dass alte Clients nicht kompatibel sind.
Mongoose verwendet den nativen Mongo-Treiber, daher müssen Sie ihn aktualisieren. Dies geschieht normalerweise durch ein Upgrade Ihrer lokalen Mongo-Installation.
Aktualisieren Sie für Benutzer, die Mongojs verwenden, auf die neueste Version und fügen Sie nach dem Verbindungsaufbau den Parameter authMechanism:'ScramSHA1'
im Optionsobjekt hinzu:
db = mongojs('mongodb://username:[email protected]:32132/mydb', ["mycollection"], {authMechanism: 'ScramSHA1'});
Für mich war die Lösung:
$ npm install --save --save-exact [email protected]
Laut: Heroku-App stürzt ab, nachdem MongoDB auf 3.0 aktualisiert wurde
Hier müssen wir wissen, dass mLab-Benutzername und -Passwort nicht der Benutzername und das Kennwort für unsere Datenbank sind. Dort müssen wir überprüfen, ob wir den richtigen Benutzernamen und das richtige Passwort für die Verbindungszeichenfolge verwendet haben
wir können hier ein Datenbank-Benutzerkonto erstellen ---- >>
Mein Anschluss ist wie folgt
const db ="mongodb://<My database username>:<my database password>.mlab.com:39648/videoplayer"
fügen Sie einfach? authSource = yourDB & w = 1 bis zum Ende der DB-URL hinzu
mongoose.connect ('mongodb: // user: password @ Host/yourDB? authSource = yourDB & w = 1') Dies funktioniert für mich. & w = 1 ist wichtig
z.B
MONGO_URI = 'mongodb: // kahn: [email protected]: 13402/ecommerce? AuthSource = ecommerce & w = 1';
https://github.com/Automattic/mongoose/issues/4587
Das hat mein Leben gerettet
1- Vergewissern Sie sich, dass die Datenbank in Betrieb ist 2- Vergessen Sie nicht, den Datenbankbenutzer mit Zugriffsberechtigungen zu erstellen.
Wünsche das wird dir helfen!
Stellen Sie sicher, dass Sie den richtigen DB-Benutzernamen und das richtige Kennwort verwenden.
Wenn Sie versuchen, über Ihren Code eine Verbindung zu db herzustellen und Ihr Benutzername und Ihr Kennwort Sonderzeichen wie '@', '$' usw. enthalten, stellen Sie sicher, dass Sie Ihren URI mit encodeURIComponent () funtion kodieren
beispiel: "localhost: // pooja:" + encodeURIComponent ('pooja @ 123') + "/ trymynewdb" , Verwenden Sie dann den enocded-uri, um eine Verbindung zu db herzustellen.
Sie können versuchen, eine Verbindung über mshell herzustellen. Während der Verbindungsherstellung mit mongoose trat ein ähnliches Problem auf, obwohl ich den Benutzernamen der Datenbank und das richtige Kennwort angegeben hatte.
geben Sie einfach den folgenden Befehl in das Terminal ein
mongo ds239412.mlab.com:39412/videoplayer11 -u dbuser -p dbpassword ( Befehl wird für Sie unterschiedlich sein, siehe hier ).
und entfernen Sie den Code in Ihrer Modelldatei, mit der Sie über Mungo verbunden waren.
Hat für mich gearbeitet. Fröhliche Gesichter.
Wenn Ihr Kennwort Sonderzeichen enthält, überprüfen Sie am besten den URL-Kodierungswert des hier vorhandenen Sonderzeichens: URL-Kodierungsliste
Ich empfehle Ihnen jedoch dringend, zu überprüfen, ob Ihre Daten zuerst gesendet wurden, bevor Sie versuchen, eine Verbindung herzustellen. Eine Möglichkeit, dies zu überprüfen, besteht darin, die Daten, die gesendet werden, in console.log anzuzeigen.
console.log(process.env.MONGO_ATLAS_PW);
Ich habe diese Fehlermeldung erhalten, als ich eine ältere Version von mongoose (Version 3.8.10) verwendet habe. Nach dem Upgrade auf die neueste Version (Version 5.0.10) verschwand der Fehler und es wurde eine Verbindung hergestellt.
Führen Sie einfach npm install [email protected] aus --save .... Ersetzen Sie jedoch die Version durch die neueste Version.