【问题标题】:Auth failed, code 18 when connecting to MongoLab database连接到 MongoLab 数据库时验证失败,代码 18
【发布时间】:2018-09-18 04:15:49
【问题描述】:

我正在尝试连接到 MongoLab 数据库,但连接时不断收到以下错误:

{ [MongoError: auth failed] name: 'MongoError', ok: 0, errmsg: 'auth failed', code: 18 }

我用来连接的代码是:

var mongoose = require("mongoose");

mongoose.connect("mongodb://username:password@ds061474.mongolab.com:61474/apitest");

mongoose.connection.on('error', function (err) {
    console.log(err);
});

当我使用 shell 连接时,我没有任何问题。我做错了什么?

【问题讨论】:

  • 您能否检查一下您是否不小心使用了您的 mongolab.com 用户名和密码,而不是数据库用户名和密码?
  • 另外,您是否可能使用旧的shell版本连接到新版本的mongodb?

标签: node.js mongodb mongoose mlab


【解决方案1】:

我在使用 mongoose 连接 mongo db 时遇到了类似的问题。经过一段时间的探索,我发现 mongoLab 正在使用 SCRAM-SHA-1 身份验证。 请参阅下面的问题我尝试将我的猫鼬升级到 V4.1.11,然后它对我有用

Authentication in mongoose using SCRAM-SHA-1

【讨论】:

【解决方案2】:

我在尝试将数据从区域设置导入服务器时遇到了同样的问题。

这 2 个参数可能很重要,在我输入它们之后它就起作用了:

--authenticationMechanism 'MONGODB-CR' 
--authenticationDatabase "admin"

注意身份验证机制,可以是不同的。检查这部分文档:https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-authenticationmechanism

【讨论】:

    【解决方案3】:

    我自己也有这个错误,原来我做错了两件事(感谢 Idos):

    1. 使用 mongolab.com 用户名而不是数据库用户名。
    2. 尝试使用通过 Ubuntu 存储库提供的 2.6 shell 连接到 mongo 3.4 数据库。 mongo --version查看。

    按照this MongoDB page 的说明将其密钥和存储库添加到您的 APT 源,以便升级并保持您的 MongoDB 安装在未来保持更新。

    【讨论】:

      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      相关资源
      最近更新 更多