Mongodb + Atlas:“验证失败,身份验证失败。”,代码:8000,

时间:2020-02-01 19:23:41

标签: node.js mongodb mongodb-atlas

我尝试过this and it's not working

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

感谢您的帮助。我不知道发生了什么。

9 个答案:

答案 0 :(得分:9)

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

我尝试更改 db 用户的密码以进行仔细检查,但仍然无效。

然后我创建了一个新用户,赋予用户管理员角色,设置密码等,然后使用该新用户和密码(相同的 dbname)进行连接并且它工作正常。

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

祝你好运!

enter image description here

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

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

  2. 如果您的密码中包含任何特殊字符,请使用带有%符号的ascii代码替换它们。例如,#将是%35

答案 3 :(得分:0)

也试一下,

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:-1)

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

上面的代码对我有用。 单独提供用户名和密码不起作用

答案 8 :(得分:-1)

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