【问题标题】:Can't connect Mongoose to MongoDB with authentication无法通过身份验证将 Mongoose 连接到 MongoDB
【发布时间】:2016-03-20 08:33:27
【问题描述】:

我为 MongoDB 数据库 myDatabase 创建了一个具有 readwrite 角色的用户。

在使用 --auth 启动 MongoDB 服务器后,在 Mongo shell 中:

mongo -u userName -p userPassword --authenticationDatabase myDatabase

正确连接并且可以读/写 myDatabase

在 mongoose 中尝试使用

连接到 MongoDB
mongoose.connect('mongodb://localhost/myDatabase', {user:'userName', password:'userPassword'});

还有

mongoose.connect('mongodb://localhost/myDatabase', {user:'userName', password:'userPassword', {auth: {authdb:'myDatabase'}});

能够连接到myDatabase,但读/写时出现授权错误

MongoError: 未授权查询 myDatabase.myCollection

我该如何解决这个问题?

【问题讨论】:

  • 你通过 mongo Shell 连接什么认证数据库?

标签: node.js mongodb mongoose


【解决方案1】:

我建议尝试以下方法:

1) 以字符串URI格式https://docs.mongodb.org/manual/reference/connection-string/连接

2) 您使用的是哪个版本的猫鼬?根据文档http://mongoosejs.com/docs/connections.html,您应该提供“pass”属性,但您将其作为“密码”传递。

【讨论】:

  • 我切换到更新版本的 Mongoose 并将属性更改为 pass 而不是密码,现在它可以按预期工作。感谢您的建议!
  • 很高兴能帮上忙!
【解决方案2】:

您应该指定身份验证数据库。您的第二次尝试几乎是正确的,但您应该使用 authSource 选项而不是 authdb。在你的情况下应该是

mongoose.connect('mongodb://localhost/myDatabase', {user:'userName', password:'userPassword', {auth: {authSource:'myDatabase'}});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 2018-01-25
    • 2015-06-02
    • 1970-01-01
    • 2016-12-09
    • 2015-07-09
    • 1970-01-01
    相关资源
    最近更新 更多