使用SCRAM-SHA-1在mongoose中进行身份验证

sun*_*itj 5 mongoose

我最近从MongoDB 2.6升级到3.0.4,并将Mongoose版本升级到4.0.0.

现在,当我尝试使用mongoose连接到mongo时:

mongoose.connect('mongodb://user:password@host:port/dbname')
Run Code Online (Sandbox Code Playgroud)

在mongo日志中,我收到此消息

来自客户端xxx.xxx.xxx.xxx的dbname上的用户的SCRAM-SHA-1身份验证失败

我在mongodb中检查过,用户存在于admin中.我使用的命令是 db.system.users.findOne({user:'user'})

此语句返回的信息包含SCRAM-SHA-1信息.

我的问题是如何在建立连接时在mongoose中指定SCRAM相关信息.我阅读了很多文章,但未能理解它是如何完成的

sun*_*itj 10

找到解决方案,我没有传递authDatabase名称,这就是连接失败的原因.早些时候我正在使用它

mongoose.connect('mongodb://user:password@host:port/dbname')
Run Code Online (Sandbox Code Playgroud)

现在我用这个

mongoose.connect('mongodb://user:password@host:port/dbname?authSource=dbWithUserCredentials')
Run Code Online (Sandbox Code Playgroud)

在Mongoose本身的讨论主题上找到了这个解决方案

编辑:

别忘了dbWithUserCredentials用自己的替换.在大多数情况下,dbWithUserCredentials将是admin.所有用户名,密码等登录凭据都已在传递给的参数中指定mongoose.connect().


YaT*_*ras 6

我遇到了类似的问题.将mongoose更新为v4.1.11后修复.