Tengo mongodb en mongolab.
Si me conecto a él por comando
mongo uri/$db -u user -p pass
está bien.
Si uso mangosta y me conecto por
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}')
Tengo error
MongoError: Authentication failed
Yo uso mangosta 4.6.1
Además, he comprobado que el error no se reproduce en la versión 4.4.20
. Funciona correctamente
¿Su nombre de usuario y contraseña incluyen caracteres no alfanuméricos? Han surgido problemas similares en el pasado con el manejo de caracteres como: en contraseñas
Además, ¿qué versión de mangosta y mongodb?
Mongodb 'v3'
No, no hay símbolos no alfanuméricos.
Hmm también ¿en qué base de datos está definido el usuario? Los usuarios de MongoDB tienen el alcance de dbs, incluso si tienen privilegios de cross-db, por lo que si el usuario que tiene no está definido en db
, deberá poner algo como mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin')
si el usuario se define en la base de datos 'admin'.
Además, si está en mongodb 3.x, es posible que esté usando la autenticación SCRAM-SHA-1 o no. Pruebe ambos de los siguientes:
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')
@ vkarpov15 , ¡Sí, ayudó! ¡Muchos gracias!
Me conecté a cloud.mongodb.com con node.js pero no entiendo por qué y cómo hice 2 conexiones exitosas, pero otras veces las conexiones no fueron exitosas.
En la consola veo
las opciones server / replset / mongos están en desuso, todas sus opciones son compatibles en el nivel superior del objeto de opciones [poolSize, ssl, sslValidate, sslCA, sslCert, sslKey, sslPass, sslCRL, autoReconnect, noDelay, keepAlive, connectTimeoutMS, fa
mily, socketTimeoutMS, recnectTries, reconnectInterval, ha, haInterval, replicaSet, secundariaAcceptableLatencyMS, acceptLatencyMS, connectWithNoPrimary, authSource, w, wtimeout, j, forceServerObjectId, serializeFunctions, ignoreUndefined, raw, bu
fferMaxEntries, readPreference, pkFactory, promiseLibrary, readConcern, maxStalenessSeconds, loggerLevel, logger, PromotionValues, PromotionBuffers, PromotionLongs, domainsEnabled, keepAliveInitialDelay, checkServerIdentity, validateOptions, appname, auth]
(nodo: 3268) UnhandledPromiseRejectionWarning: Rechazo de promesa no controlada (id de rechazo: 1): MongoError: error de autenticación
(nodo: 3268) DeprecationWarning: Los rechazos de promesas no controladas están obsoletos. En el futuro, los rechazos de promesas que no se manejan terminarán el proceso de Node.js con un código de salida distinto de cero.
lo intenté, pero no funcionó,
mangosta 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)
simplemente agregue ?authSource=yourDB&w=1
al final de la URL de la base de datos
mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
este trabajo para mi. &w=1
es importante
simplemente agregue
?authSource=yourDB&w=1
al final de la URL de la base de datos
mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
este trabajo para mi.&w=1
es importante
Gracias Señor. : 3 buena respuesta
Comentario más útil
Hmm también ¿en qué base de datos está definido el usuario? Los usuarios de MongoDB tienen el alcance de dbs, incluso si tienen privilegios de cross-db, por lo que si el usuario que tiene no está definido en
db
, deberá poner algo comomongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin')
si el usuario se define en la base de datos 'admin'.Además, si está en mongodb 3.x, es posible que esté usando la autenticación SCRAM-SHA-1 o no. Pruebe ambos de los siguientes:
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')