Mongoose: MongoError : l'authentification a échoué

Créé le 2 oct. 2016  ·  10Commentaires  ·  Source: Automattic/mongoose

J'ai mongodb dans mongolab.
Si je m'y connecte par commande

mongo uri/$db -u user -p pass

c'est bon.
Si j'utilise la mangouste et que je me connecte par

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

j'ai une erreur

MongoError: Authentication failed

J'utilise la mangouste 4.6.1

needs clarification

Commentaire le plus utile

Hmm aussi sur quelle base de données l'utilisateur est-il défini ? Les utilisateurs de MongoDB sont limités à dbs, même s'ils ont des privilèges cross-db, donc si l'utilisateur que vous avez n'est pas défini sur db vous devrez mettre quelque chose comme mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin') si l'utilisateur est défini sur la base de données 'admin'.

De plus, si vous utilisez mongodb 3.x, vous utilisez peut-être l'authentification SCRAM-SHA-1 ou non. Essayez les deux ci-dessous :

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

Tous les 10 commentaires

Aussi, j'ai vérifié - le bug n'est pas reproduit dans la version 4.4.20 . ça marche correctement

Votre nom d'utilisateur et votre mot de passe contiennent-ils des caractères non alphanumériques ? Des problèmes similaires sont apparus dans le passé avec la gestion de caractères tels que : dans les mots de passe

Aussi, quelle version de mongoose et mongodb ?

Mongodb 'v3'
Non, il n'y a pas de symboles non alphanumériques.

Hmm aussi sur quelle base de données l'utilisateur est-il défini ? Les utilisateurs de MongoDB sont limités à dbs, même s'ils ont des privilèges cross-db, donc si l'utilisateur que vous avez n'est pas défini sur db vous devrez mettre quelque chose comme mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin') si l'utilisateur est défini sur la base de données 'admin'.

De plus, si vous utilisez mongodb 3.x, vous utilisez peut-être l'authentification SCRAM-SHA-1 ou non. Essayez les deux ci-dessous :

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

@vkarpov15 , Oui, ça a aidé ! Merci beaucoup!

J'ai établi une connexion à cloud.mongodb.com avec node.js mais je ne comprends pas pourquoi et comment j'ai réussi 2 connexions, mais d'autres fois, les connexions ont échoué.
image

Dans la console je vois

les options server/replset/mongos sont obsolètes, toutes leurs options sont prises en charge au niveau supérieur de l'objet options [poolSize,ssl,sslValidate,sslCA,sslCert,sslKey,sslPass,sslCRL,autoReconnect,noDelay,keepAlive,connectTimeoutMS,fa
mily,socketTimeoutMS,reconnectTries,reconnectInterval,ha,haInterval,replicaSet,secondaireAcceptableLatencyMS,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]

(nœud : 3268) UnhandledPromiseRejectionWarning : Rejet de promesse non géré (ID de rejet : 1) : MongoError : échec de l'authentification
(noeud : 3268) DeprecationWarning : les rejets de promesses non gérés sont dépréciés. À l'avenir, les refus de promesses qui ne sont pas traités mettront fin au processus Node.js avec un code de sortie différent de zéro.

j'ai essayé, mais ça ne marche pas,

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

ajoutez simplement ?authSource=yourDB&w=1 à la fin de l'url de la base de données

mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
ce travail pour moi. &w=1 est important

ajoutez simplement ?authSource=yourDB&w=1 à la fin de l'url de la base de données

mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
ce travail pour moi. &w=1 est important

Merci Monsieur. :3 bonne réponse

Cette page vous a été utile?
0 / 5 - 0 notes