我最近从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().