Mongodb + 图集:'bad auth Authentication failed.',代码:8000,

Mongodb + Atlas: 'bad auth Authentication failed.', code: 8000,

我试过了

我在使用 Mongodb + Atlas 时遇到以下错误:

MongoError: bad auth Authentication failed.
    at /Users/cyrus/Documents/Code/01. Code/Franklin-ford/franklin-ford-server/node_modules/mongodb-core/lib/auth/auth_provider.js:46:25
    at /Users/cyrus/Documents/Code/01. Code/Franklin-ford/franklin-ford-server/node_modules/mongodb-core/lib/auth/scram.js:215:18
    at Connection.messageHandler (/Users/cyrus/Documents/Code/01. Code/Franklin-ford/franklin-ford-server/node_modules/mongodb-core/lib/connection/connect.js:334:5)
    at Connection.emit (events.js:203:13)
    at processMessage (/Users/cyrus/Documents/Code/01. Code/Franklin-ford/franklin-ford-server/node_modules/mongodb-core/lib/connection/connection.js:364:10)
    at TLSSocket.<anonymous> (/Users/cyrus/Documents/Code/01. Code/Franklin-ford/franklin-ford-server/node_modules/mongodb-core/lib/connection/connection.js:533:15)
    at TLSSocket.emit (events.js:203:13)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:276:11)
    at TLSSocket.Readable.push (_stream_readable.js:210:10)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:166:17) {
  ok: 0,
  errmsg: 'bad auth Authentication failed.',
  code: 8000,
  codeName: 'AtlasError',
  name: 'MongoError',
  [Symbol(mongoErrorContextSymbol)]: {}

以下是我如何实例化我的数据库:

来自credentials.js

const config = {
    mongoConnectionURL: "mongodb://cyruslk:<MY_PASS_HERE>@franklinford-shard-00-00-3dveb.mongodb.net:27017,franklinford-shard-00-01-3dveb.mongodb.net:27017,franklinford-shard-00-02-3dveb.mongodb.net:27017/test?ssl=true&replicaSet=FranklinFord-shard-0&authSource=admin&retryWrites=true&w=majority",
    mongoDatabaseName: "FranklinFord",
  }

来自我的主要 server.js 应用程序:

const {MongoClient} = require("mongodb");
const connectionURL = config.mongoConnectionURL;
const databaseName = config.mongoDatabaseName;


  let sendToDb = (dataToInsert) => {
    MongoClient.connect(connectionURL, {
      useNewUrlParser: true,
    }, (error, client) => {

      if(error){
        console.log(error);
        return console.log("Unable to connect to the db.");
      }
      const db = client.db(databaseName);
      console.log(db);

      db.collection("ford_twitter").insertOne({
        masterData: dataToInsert
      }, (error, result) => {
        if(error){
          return console.log("unable to insert users");
        }
        console.log("Data successfully inserted");
      })
    })
  }

您可以找到代码here

谢谢你帮助我。我不知道发生了什么。

我遇到了同样的问题,在那个连接字符串中写着 "mongodb+srv://<username>:<password>@cluster0.4h226.mongodb.n...",你应该在那个字符串中输入用户名和密码。

  1. 假设我的用户名是“user”,密码是password,我们应该写"mongodb+srv://user:password@cluster0.4h226.mongodb.n...",没有“<”和“>”;

  2. 如果您的密码中有任何特殊字符,请将其替换为前面带有 % 符号的 ascii 代码。例如,# 将是 %35

也试试,

'CLIENT' : { 'host' : 'connection_string_to_mongodb' }

因为connection_string有用户名、密码、数据库名、集群名等,客户端中只有这一对键值对。它对我有用。

还要确保您的密码没有任何数字或特殊字符

我刚刚遇到了这个问题,我知道我使用的是正确的用户名、密码和数据库名称。

我试过更改db用户的密码来仔细检查,但还是不行。

然后我创建了一个新用户,赋予该用户管理员角色,设置密码等,然后使用该新用户和密码(相同的数据库名称)进行连接并且成功了。

我不知道到底是什么问题,但希望它能帮助你们中的一些人节省一些时间:)

祝你好运!

不妨试试把你的IP加入白名单。 转到 网络访问 -> 添加 IP 地址 -> 当前 IP,然后保存更改并重试,希望对您有所帮助。

我遇到了同样的问题,我已经更改了密码,但没有用。我的密码包括我删除的数字并且有效

pip install djongo
pip install dnspython
DATABASES = {
    'default': {
        'ENGINE': 'djongo',
         "NAME": "database name",
        "CLIENT": {
        "host": "connection_string_to_mongodb",
        
    },
        
    }
}

上面的代码对我有用。 单独提供用户名和密码无效

创建一个新的管理员用户帐户对我有用。我发现这不仅是 pymongo 的情况,而且当我使用 mongo shell.

时也是如此

我遇到了同样的问题并找到了解决方案。 但更改了数据库密码并且它有效。 [尽量保留自动生成的密码]

出于某种原因,当我避免在用户名和密码中复制/粘贴和键入时,它会起作用。

解决方法是去掉用户名和密码中的方括号<>。输入正确的数据库名称。授予对您的数据库的访问权限,以便将数据发布到您的数据库中。

此问题的解决方案是确保您的用户名和密码在名称和数字之间包含“_”,以防您的名称或密码包含数字

使用这个

const config = {
    mongoConnectionURL: "mongodb://cyruslk:MY_PASS_HERE@franklinford-shard-00-00-3dveb.mongodb.net:27017,franklinford-shard-00-01-3dveb.mongodb.net:27017,franklinford-shard-00-02-3dveb.mongodb.net:27017/test?ssl=true&replicaSet=FranklinFord-shard-0&authSource=admin&retryWrites=true&w=majority",
    mongoDatabaseName: "FranklinFord",
  }

注意:

从用户名和密码中删除“<”和“>”,并确保用户名和密码位于冒号前后(符号 =“:”),不应为空 space冒号前后

这不仅仅与密码有关

虽然你的错误已经被一些人回答了,但这是一个密码问题。然而,看看这里的评论和答案,我看到很多人有类似的错误,但无法用提供的答案解决。但为什么 ?

这个错误不仅仅与密码有关。这里 数据库名称、密码和用户名很重要。
由于数据库名称、密码和用户名是 url 的一部分,因此如果您在 url 的这三个部分中的任何一个中使用任何 特殊字符 ,那么您需要用 % 替换它们,然后用那些特殊符号的 ASCII Code 替换它们。例如:对于 $- 符号,您需要将其替换为 %36%45
并且显然也从您复制的初始 link 中删除 <> 符号,就像 <password>
参见 ASCII Code Here
See the image to understand more

首先报错MongoServerError: bad auth: Authentication failed表示用户名和密码可能不正确

解决方案:在credential.js中删除用户名和密码两边的方括号<>,然后你就有了一个数据库连接。

对我来说,我通过创建另一个管理员用户解决了这个问题。 我忘记了我有一个已部署的 Web 应用程序已经在使用管理员用户。 因此,创建另一个管理员用户并将其用作不同网络应用程序上的 Mongo URI 帮助我解决了这个身份验证问题