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..."
,你应该在那个字符串中输入用户名和密码。
假设我的用户名是“user”,密码是password,我们应该写"mongodb+srv://user:password@cluster0.4h226.mongodb.n..."
,没有“<”和“>”;
如果您的密码中有任何特殊字符,请将其替换为前面带有 %
符号的 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 帮助我解决了这个身份验证问题
我试过了
我在使用 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..."
,你应该在那个字符串中输入用户名和密码。
假设我的用户名是“user”,密码是password,我们应该写
"mongodb+srv://user:password@cluster0.4h226.mongodb.n..."
,没有“<”和“>”;如果您的密码中有任何特殊字符,请将其替换为前面带有
%
符号的 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 帮助我解决了这个身份验证问题