Mongoose: MongoError: Error de autenticación

Creado en 2 oct. 2016  ·  10Comentarios  ·  Fuente: Automattic/mongoose

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

needs clarification

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 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')

Todos 10 comentarios

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.
image

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

¿Fue útil esta página
0 / 5 - 0 calificaciones