Mongoose: MongoError: Falha na autenticação

Criado em 2 out. 2016  ·  10Comentários  ·  Fonte: Automattic/mongoose

Eu tenho mongodb em mongolab.
Se eu conectar a ele por comando

mongo uri/$db -u user -p pass

está tudo bem.
Se eu usar o mangusto e conectar por

mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}')

Eu tenho erro

MongoError: Authentication failed

Eu uso mangusto 4.6.1

needs clarification

Comentários muito úteis

Hmm também em qual banco de dados o usuário está definido? Os usuários do MongoDB têm como escopo o dbs, mesmo se tiverem privilégios cross-db, então se o usuário que você não está definido em db você precisará colocar algo como mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin') se o usuário é definido no banco de dados 'admin'.

Além disso, se você estiver no mongodb 3.x, pode estar usando a autenticação SCRAM-SHA-1 ou não. Experimente as duas opções a seguir:

  • mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
  • mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')

Todos 10 comentários

Além disso, eu verifiquei - o bug não é reproduzido na versão 4.4.20 . Funciona corretamente

Seu nome de usuário e senha incluem caracteres não alfanuméricos? Problemas semelhantes surgiram no passado com o tratamento de caracteres como: em senhas

Além disso, qual versão de mangusto e mongodb?

Mongodb 'v3'
Não, não há símbolos não alfanuméricos.

Hmm também em qual banco de dados o usuário está definido? Os usuários do MongoDB têm como escopo o dbs, mesmo se tiverem privilégios cross-db, então se o usuário que você não está definido em db você precisará colocar algo como mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin') se o usuário é definido no banco de dados 'admin'.

Além disso, se você estiver no mongodb 3.x, pode estar usando a autenticação SCRAM-SHA-1 ou não. Experimente as duas opções a seguir:

  • mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
  • mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')

@ vkarpov15 , Sim, ajudou! Muito obrigado!

Fiz conexão com cloud.mongodb.com com node.js, mas não entendo por que e como fiz 2 conexões bem-sucedidas, mas outras vezes as conexões não tiveram sucesso.
image

No console eu vejo

as opções server / replset / mongos estão obsoletas, todas as suas opções são suportadas no nível superior do objeto de opções [poolSize, ssl, sslValidate, sslCA, sslCert, sslKey, sslPass, sslCRL, autoReconnect, noDelay, keepAlive, connectTimeoutMS, fa
mily, socketTimeoutMS, reconnectTries, reconnectInterval, ha, haInterval, replicaSet, secondaryAcceptableLatencyMS, associatedLatencyMS, connectWithNoPrimary, authSource, w, wtimeout, j, forceServerObjectId, serializeFunctions, ignoreUndefined, raw, bu
fferMaxEntries, readPreference, pkFactory, PromessaLibrary, readConcern, maxStalenessSeconds, loggerLevel, logger, promovaValues, promovaBuffers, promovaLonga, domainsEnabled, keepAliveInitialDelay, checkServerIdentity, validateOptions, appname, auth]

(nó: 3268) UnhandledPromiseRejectionWarning: Rejeição de promessa não tratada (id de rejeição: 1): MongoError: falha de autenticação
(nó: 3268) Aviso de descontinuação: Rejeições de promessa não tratadas foram descontinuadas. No futuro, as rejeições de promessa que não são tratadas encerrarão o processo Node.js com um código de saída diferente de zero.

eu tentei, mas não funcionou,

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

basta adicionar ?authSource=yourDB&w=1 ao final do url do banco de dados

mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
este trabalho para mim. &w=1 é importante

basta adicionar ?authSource=yourDB&w=1 ao final do url do banco de dados

mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
este trabalho para mim. &w=1 é importante

Obrigado senhor. : 3 boa resposta

Esta página foi útil?
0 / 5 - 0 avaliações