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
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é.
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
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 commemongoose.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')