Saya memiliki mongodb di mongolab.
Jika saya menghubungkannya dengan perintah
mongo uri/$db -u user -p pass
tidak apa-apa.
Jika saya menggunakan luwak dan terhubung dengan
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}')
Saya memiliki kesalahan
MongoError: Authentication failed
Saya menggunakan luwak 4.6.1
Juga, saya telah memeriksa - bug tidak direproduksi dalam versi 4.4.20
. Ini bekerja dengan benar
Apakah nama pengguna dan kata sandi Anda menyertakan karakter non alfanumerik? Masalah serupa telah muncul di masa lalu dengan penanganan karakter seperti: dalam kata sandi
Juga, luwak dan mongodb versi berapa?
Mongodb 'v3'
Tidak, tidak ada simbol non-alfanumerik.
Hmm juga basis data apa yang ditentukan pengguna? Pengguna MongoDB tercakup dalam dbs, bahkan jika mereka memiliki hak lintas db, jadi jika pengguna yang Anda miliki tidak ditentukan pada db
Anda harus meletakkan sesuatu seperti mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin')
jika pengguna didefinisikan pada 'admin' db.
Juga, jika Anda menggunakan mongodb 3.x, Anda mungkin menggunakan auth SCRAM-SHA-1 atau tidak. Coba kedua hal di bawah ini:
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')
@vkarpov15 , Ya, itu membantu! Terima kasih banyak!
Saya telah membuat koneksi ke cloud.mongodb.com dengan node.js tetapi saya tidak mengerti mengapa dan bagaimana saya membuat 2 koneksi yang berhasil tetapi di lain waktu koneksi tidak berhasil.
Di Konsol saya melihat
opsi server/replset/mongos tidak digunakan lagi, semua opsinya didukung di tingkat atas objek opsi [poolSize,ssl,sslValidate,sslCA,sslCert,sslKey,sslPass,sslCRL,autoReconnect,noDelay,keepAlive,connectTimeoutMS,fa
mily,socketTimeoutMS,reconnectTries,reconnectInterval,ha,haInterval,replicaSet,secondaryAcceptableLatencyMS,acceptableLatencyMS,connectWithNoPrimary,authSource,w,wtimeout,j,forceServerObjectId,serializeFunctions,abaikanUndefined,mentah,bu
fferMaxEntries,readPreference,pkFactory,promiseLibrary,readConcern,maxStalenessSeconds,loggerLevel,logger,promoteValues,promoteBuffers,promoteLongs,domainsEnabled,keepAliveInitialDelay,checkServerIdentity,validateOptions,appname,auth]
(node:3268) UnhandledPromiseRejectionWarning: Penolakan janji yang tidak ditangani (id penolakan: 1): MongoError: otentikasi gagal
(node:3268) DeprecationWarning: Penolakan janji yang tidak ditangani tidak digunakan lagi. Di masa mendatang, penolakan janji yang tidak ditangani akan menghentikan proses Node.js dengan kode keluar bukan nol.
saya mencobanya, tetapi tidak berhasil,
luwak 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)
cukup tambahkan ?authSource=yourDB&w=1
ke akhir url db
mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
ini bekerja untuk saya. &w=1
itu penting
cukup tambahkan
?authSource=yourDB&w=1
ke akhir url db
mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
ini bekerja untuk saya.&w=1
itu penting
Terima kasih Pak. :3 jawaban yang bagus
Komentar yang paling membantu
Hmm juga basis data apa yang ditentukan pengguna? Pengguna MongoDB tercakup dalam dbs, bahkan jika mereka memiliki hak lintas db, jadi jika pengguna yang Anda miliki tidak ditentukan pada
db
Anda harus meletakkan sesuatu sepertimongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin')
jika pengguna didefinisikan pada 'admin' db.Juga, jika Anda menggunakan mongodb 3.x, Anda mungkin menggunakan auth SCRAM-SHA-1 atau tidak. Coba kedua hal di bawah ini:
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')