Ich habe mongodb in mongolab.
Wenn ich mich per Befehl damit verbinde
mongo uri/$db -u user -p pass
es ist okay.
Wenn ich Mungo benutze und mich verbinde
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}')
Ich habe einen Fehler
MongoError: Authentication failed
Ich benutze Mungo 4.6.1
Außerdem habe ich nachgesehen - der Fehler wird in der 4.4.20
Version nicht reproduziert. Es funktioniert richtig
Enthalten Ihr Benutzername und Ihr Passwort keine alphanumerischen Zeichen? Ähnliche Probleme sind in der Vergangenheit beim Umgang mit Zeichen wie: in Passwörtern aufgetreten
Außerdem, welche Version von Mungo und Mongodb?
Mongodb 'v3'
Nein, es gibt keine nicht-alphanumerischen Symbole.
Hmm auch auf welcher Datenbank ist der Benutzer definiert? MongoDB Benutzer zu dbs scoped, auch wenn sie Quer db Privilegien, also wenn der Benutzer Sie haben nicht auf definierte db
Sie werden so etwas wie setzen müssen mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin')
, wenn der Benutzer ist in der 'admin'-DB definiert.
Wenn Sie mongodb 3.x verwenden, verwenden Sie möglicherweise SCRAM-SHA-1-Authentifizierung oder nicht. Versuchen Sie beides:
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')
@vkarpov15 , Ja, es hat geholfen! Vielen Dank!
Ich habe mit node.js eine Verbindung zu cloud.mongodb.com hergestellt, verstehe aber nicht, warum und wie ich 2 erfolgreiche Verbindungen hergestellt habe, aber zu anderen Zeiten waren die Verbindungen nicht erfolgreich.
In der Konsole sehe ich
die server/replset/mongos-Optionen sind veraltet, alle ihre Optionen werden auf der obersten Ebene des Optionsobjekts unterstützt [poolSize,ssl,sslValidate,sslCA,sslCert,sslKey,sslPass,sslCRL,autoReconnect,noDelay,keepAlive,connectTimeoutMS,fa
mily,socketTimeoutMS,reconnectTries,reconnectInterval,ha,haInterval,replicaSet,secondaryAcceptableLatencyMS,acceptableLatencyMS,connectWithNoPrimary,authSource,w,wtimeout,j,forceServerObjectId,serializeFunctions,ignoreUndefined,raw,bu
fferMaxEntries,readPreference,pkFactory,promiseLibrary,readConcern,maxStalenessSeconds,loggerLevel,logger,promoteValues,promoteBuffers,promoteLongs,domainsEnabled,keepAliveInitialDelay,checkServerIdentity,validateOptions,appname,auth]
(node:3268) UnhandledPromiseRejectionWarning: Nicht behandelte Promise-Ablehnung (Ablehnungs-ID: 1): MongoError: Authentifizierung fehlgeschlagen
(node:3268) DeprecationWarning: Nicht behandelte Promise-Ablehnungen sind veraltet. Zukünftig wird der Node.js-Prozess bei Ablehnungen von Zusagen, die nicht verarbeitet werden, mit einem Exit-Code ungleich Null beendet.
Ich habe es versucht, aber es funktioniert nicht,
Mungo v4.5.3
mongodb v3.4.7
errMsg:
MongoError: Authentication failed.
14|gougouS | at Function.MongoError.create (/www/website/gougouServer/source/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)
Fügen Sie einfach ?authSource=yourDB&w=1
am Ende der DB-URL hinzu
mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
diese Arbeit für mich. &w=1
ist wichtig
Fügen Sie einfach
?authSource=yourDB&w=1
am Ende der DB-URL hinzu
mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
diese Arbeit für mich.&w=1
ist wichtig
Danke mein Herr. :3 gute antwort
Hilfreichster Kommentar
Hmm auch auf welcher Datenbank ist der Benutzer definiert? MongoDB Benutzer zu dbs scoped, auch wenn sie Quer db Privilegien, also wenn der Benutzer Sie haben nicht auf definierte
db
Sie werden so etwas wie setzen müssenmongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin')
, wenn der Benutzer ist in der 'admin'-DB definiert.Wenn Sie mongodb 3.x verwenden, verwenden Sie möglicherweise SCRAM-SHA-1-Authentifizierung oder nicht. Versuchen Sie beides:
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')