【问题标题】:Authentication in mongoose using SCRAM-SHA-1使用 SCRAM-SHA-1 在猫鼬中进行身份验证
【发布时间】:2015-10-02 14:28:00
【问题描述】:

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

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

mongoose.connect('mongodb://user:password@host:port/dbname')

在 mongo 日志中我收到此消息

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

我在 mongodb 中签入,该用户存在于 admin 中。我使用的命令是 db.system.users.findOne({user:'user'})

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

我的问题是如何在建立连接时在 mongoose 中指定 SCRAM 相关信息。我读了很多文章,但不明白它是如何完成的

【问题讨论】:

    标签: mongoose


    【解决方案1】:

    找到解决方案,我没有传递 authDatabase 名称,这就是连接失败的原因。之前我用这个

    mongoose.connect('mongodb://user:password@host:port/dbname')
    

    现在我用这个

    mongoose.connect('mongodb://user:password@host:port/dbname?authSource=dbWithUserCredentials')
    

    在 Mongoose 的 Discussion thread 上找到了这个解决方案

    编辑:

    不要忘记将dbWithUserCredentials 替换为您自己的。在大多数情况下,dbWithUserCredentials 将是管理员。所有登录凭据(如用户名、密码)都已在传递给mongoose.connect() 的参数中指定。

    【讨论】:

    • dbWithUserCredentials 只是一个字符串。虽然它不是一个字符串的好名字。在大多数情况下dbWithUserCredentialsadmin,但在我的情况下dbWithUserCredentials 是另外一回事。所有登录凭据,如usernamepassword,都已在传递给mongoose.connect的参数中指定
    【解决方案2】:

    我遇到了类似的问题。将猫鼬更新到 v4.1.11 后已修复。

    【讨论】:

    • 我正在运行 v4.4.10 但我仍然有这个问题。通过@sunitj's answer指定身份验证源对我有用。
    • 升级猫鼬版本对我有帮助。谢谢你:)
    【解决方案3】:

    更改为 Mongoose 版本 4.0.3 并且可以正常工作。

    【讨论】:

      猜你喜欢
      • 2015-12-20
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 2012-08-12
      • 2012-01-07
      • 2020-10-29
      • 1970-01-01
      相关资源
      最近更新 更多