Mongoose: MongoError: فشلت المصادقة

تم إنشاؤها على ٢ أكتوبر ٢٠١٦  ·  10تعليقات  ·  مصدر: Automattic/mongoose

لدي mongodb في mongolab.
إذا قمت بالاتصال به عن طريق الأمر

mongo uri/$db -u user -p pass

هذا جيد.
إذا كنت أستخدم النمس وتواصلت عن طريق

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

لدي خطأ

MongoError: Authentication failed

أستخدم النمس 4.6.1

needs clarification

التعليق الأكثر فائدة

حسنًا ، ما هي قاعدة البيانات التي يتم تعريف المستخدم عليها؟ يتم تحديد نطاق مستخدمي MongoDB إلى dbs ، حتى إذا كان لديهم امتيازات عبر ديسيبل ، لذلك إذا لم يتم تعريف المستخدم الذي حددته على db فستحتاج إلى وضع شيء مثل mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin') إذا كان المستخدم يتم تعريفه على "admin" ديسيبل.

أيضًا ، إذا كنت تستخدم mongodb 3.x ، فربما تستخدم مصادقة SCRAM-SHA-1 أم لا. جرب كلاً مما يلي:

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

ال 10 كومينتر

لقد تحققت أيضًا - لا يتم إعادة إنتاج الخطأ في إصدار 4.4.20 . يعمل بشكل صحيح

هل يتضمن اسم المستخدم وكلمة المرور أي أحرف غير أبجدية رقمية؟ ظهرت مشكلات مماثلة في الماضي مع التعامل مع أحرف مثل: في كلمات المرور

أيضا ، ما هو إصدار النمس والنمس؟

مونجودب "v3"
لا ، لا توجد رموز غير أبجدية رقمية.

حسنًا ، ما هي قاعدة البيانات التي يتم تعريف المستخدم عليها؟ يتم تحديد نطاق مستخدمي MongoDB إلى dbs ، حتى إذا كان لديهم امتيازات عبر ديسيبل ، لذلك إذا لم يتم تعريف المستخدم الذي حددته على db فستحتاج إلى وضع شيء مثل mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin') إذا كان المستخدم يتم تعريفه على "admin" ديسيبل.

أيضًا ، إذا كنت تستخدم mongodb 3.x ، فربما تستخدم مصادقة SCRAM-SHA-1 أم لا. جرب كلاً مما يلي:

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

@ vkarpov15 ، نعم ، لقد ساعدت! شكرا جزيلا!

لقد أجريت اتصالًا بـ cloud.mongodb.com باستخدام node.js ولكني لا أفهم لماذا وكيف أجريت اتصالين ناجحين ولكن في أوقات أخرى كانت الاتصالات غير ناجحة.
image

في وحدة التحكم أرى

تم إهمال خيارات الخادم / إعادة الضبط / mongos ، وجميع خياراتها مدعومة في المستوى الأعلى من كائن الخيارات [poolSize ، ssl ، sslValidate ، sslCA ، sslCert ، sslKey ، sslPass ، sslCRL ، autoReconnect ، noDelay ، keepAlive ، connectTimeoutMS ، fa
mily ، socketTimeoutMS ، recnectTries ، recnectInterval ، ha ، haInterval ، replicaSet ، SecondaryAcceptableLatencyMS ، AcceptLatencyMS ، connectWithNoPrimary ، authSource ، w ، wtimeout ، j ، forceServerObjectId ، serializeFunctions ، ignoreUndefined ، raw
fferMaxEntries، readPreference، pkFactory، trustLibrary، readConcern، maxStalenessSeconds، loggerLevel، logger، PromotionValues، promBuffers، promotionLongs، domainsEnabled، keepAliveInitialDelay، checkServerIdentity، validateOptions، appname، auth]

(العقدة: 3268) UnhandledPromiseRejectionWarning: رفض الوعد الذي لم تتم معالجته (معرّف الرفض: 1): MongoError: فشل المصادقة
(العقدة: 3268) تحذير الإيقاف: تم إهمال رفض الوعد الذي لم تتم معالجته. في المستقبل ، ستؤدي حالات رفض الوعد التي لم يتم التعامل معها إلى إنهاء عملية Node.js برمز إنهاء غير صفري.

لقد جربته ، لكن لم أعمل ،

النمس v4.5.3
mongodb v3.4.7

رسالة
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)

فقط أضف ?authSource=yourDB&w=1 إلى نهاية عنوان url db

mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
هذا العمل بالنسبة لي. &w=1 مهم

فقط أضف ?authSource=yourDB&w=1 إلى نهاية عنوان url db

mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
هذا العمل بالنسبة لي. &w=1 مهم

شكرا لك سيدي. : 3 إجابة جيدة

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات