[英]MongoDB atlas through mongo shell: “Error: bad auth : Authentication failed.” what could possibly cause this Authentication failure?
[英]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");
})
})
}
你可以在這里找到代碼
謝謝你幫助我。 我不知道發生了什么。
我有同樣的問題,在那個連接字符串中寫成"mongodb+srv://<username>:<password>@cluster0.4h226.mongodb.n..."
,你應該在那個字符串中輸入用戶名和密碼.
假設我的用戶名是“user”,密碼是密碼,我們應該寫"mongodb+srv://user:password@cluster0.4h226.mongodb.n..."
,沒有“<”和“>”;
如果您的密碼中有任何特殊字符,請將其替換為帶有%
符號的 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並且它對我有用。
我有同樣的問題,對我有用的是改變我的用戶名,從 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.