Mongodb Atlas:'bad auth Authentication failed.',代码: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");
      })
    })
  }

你可以在 这里 找到代码

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

原文由 cyruslk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

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

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

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

原文由 Nikhil Thorat 发布,翻译遵循 CC BY-SA 4.0 许可协议

我知道我使用的是正确的用户名、密码和 DBname,但遇到了这个问题。

我尝试更改db用户的密码来仔细检查,但仍然没有用。

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

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

祝你好运!

在此处输入图像描述

原文由 IndustryDesigns 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题