簡體   English   中英

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

你可以在這里找到代碼

謝謝你幫助我。 我不知道發生了什么。

我剛知道我使用了正確的用戶名、密碼和 DBname,就遇到了這個問題。

我試圖更改 db 用戶的密碼以仔細檢查,但它仍然不起作用。

然后我創建了一個新用戶,賦予用戶管理員角色,設置密碼等,然后使用該新用戶和密碼(相同的數據庫名稱)進行連接,並且它工作正常。

我不知道到底是什么問題,但希望它可以幫助你們中的一些人節省一些時間:)

祝你好運!

在此處輸入圖像描述

我有同樣的問題,在那個連接字符串中寫成"mongodb+srv://<username>:<password>@cluster0.4h226.mongodb.n..." ,你應該在那個字符串中輸入用戶名和密碼.

  1. 假設我的用戶名是“user”,密碼是密碼,我們應該寫"mongodb+srv://user:password@cluster0.4h226.mongodb.n..." ,沒有“<”和“>”;

  2. 如果您的密碼中有任何特殊字符,請將其替換為帶有%符號的 ascii 代碼。 例如, #將是%35

我遇到了同樣的問題,我已經更改了密碼,但它沒有用。 我的密碼包括我刪除它們的號碼並且它有效

一、報錯MongoServerError: bad auth: Authentication failed表示用戶名和密碼可能不正確。

解決方案:在credential.js中刪除用戶名和密碼周圍的括號 <>,然后您就有了數據庫連接。

也試試看,

“客戶”:{“主機”:“connection_string_to_mongodb”}

因為,connection_string 有用戶名、密碼、數據庫名、集群名等等,在客戶端就只有這一個鍵值對。 它對我有用。

還要確保您的密碼沒有任何數字或特殊字符

不妨嘗試將您的IP添加到白名單中。 轉到網絡訪問 -> 添加 IP 地址 -> 當前 IP ,然后保存更改並重試,希望它會有所幫助。

使新的管理員用戶帳戶對我有用。 我發現這不僅適用於 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",
  }

筆記:

從用戶名和密碼中刪除 '<' & '>' 並確保用戶名和密碼位於冒號前后 (symbol = ":" ) 冒號前后不應有空格

這不僅與密碼有關

盡管某些人已經回答了您的錯誤,但這是密碼問題。 但是,查看此處的評論和答案,我看到很多人有類似的錯誤,但無法用提供的答案解決。 但為什么 ?

此錯誤不僅與密碼有關。 在這里,數據庫名稱、密碼和用戶名很重要。
由於數據庫名稱、密碼和用戶名是 url 的一部分,因此如果您在 url 的這三個部分中的任何一個中使用任何特殊字符,那么您需要將它們替換為% ,然后是這些特殊符號的ASCII Code 例如:對於$-符號,您需要將其替換為%36%45
並且顯然也從您復制的初始鏈接中刪除<>符號,例如<password>
在此處查看 ASCII 代碼
查看圖片以了解更多信息

對我來說,我通過創建另一個管理員用戶解決了這個問題。 我忘記了我已經部署了一個已經使用管理員用戶的 Web 應用程序。 因此,創建另一個管理員用戶並將其用作不同 Web 應用程序上的 Mongo URI 幫助我解決了這個身份驗證問題

如果您使用的是dotenv ,那么首先確保您已安裝它並從 index.js 頁面調用它require('dotenv').config();

那么最不常見的錯誤可能是在 .env 文件中創建一個名為“USERNAME”的變量。

//Do not create a variable named USERNAME=abc in the .env file 

在代碼中使用${password}而不是<password>

在為尋找答案而頭疼之后,我意識到我在連接 stream 中的密碼周圍仍然有 <>。 確保刪除它。

嘗試了此處提供的所有解決方案,除了數據庫集群的“從密碼中刪除數字”之外沒有任何效果,並且它有效

我也面臨同樣的問題,我刪除了+srv並且它對我有用。

檢查不是從您的網絡創建的數據庫的用戶名和密碼。

像這樣

           username    password                                 name of ur database                 

mongodb+srv://eshop1235:benonti1244$$@cluster0.4nzfbwx.mongodb.net/eshop-database?retryWrites=true&w=多數

您將在以下位置找到所有這些答案:

右側導航:

安全

 quickstart

 database access

 network access

選項編輯。

在此處輸入圖像描述

在做之前,請檢查你的數據庫是否“活躍”。

在此處輸入圖像描述

在此處輸入圖像描述

我有同樣的問題,對我有用的是改變我的用戶名,從 yazi-kun 到 yazikun 我相信你的用戶名不應該包含空格或任何特殊字符

我遇到過同樣的問題。 我新建了一個集群,問題解決了。

允許的特殊字符是我出錯的地方。 如果您在連接 URL 中輸入的密碼與您在帳戶中輸入的密碼完全相同,並且包括此處包含的一些字符,則它將無法正常工作。

我遇到了同樣的問題並找到了解決方案。 但是更改了數據庫密碼並且可以正常工作。 [盡量保留自動生成的密碼]

我遇到了同樣的問題。 我所做的是從以下位置刪除<>

mongodb+srv://<username>:<password>@cluster0.vznga.mongodb.net/?retryWrites=true&w=majority`

例如:
用戶名: John
密碼: qwerty123

mongodb+srv://John:qwerty123@cluster20.qkijs.mongodb.net/?retryWrites=true&w=majority

刪除<>后,它工作得很好。

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

上面的代碼對我有用。 單獨提供用戶名和密碼不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM