MongoError - 身份验证错误(带@的密码)

Posted

技术标签:

【中文标题】MongoError - 身份验证错误(带@的密码)【英文标题】:MongoError - Authentication error (password with @) 【发布时间】:2019-12-16 07:04:27 【问题描述】:

这是我的 NodeJS 应用程序中的代码,用于连接到我的 MongoDB 引擎:

 const collection = 'mynewcollection';
 const password = 'passwordwithan@';
 const mongoUrl = `mongodb://admin:$encodeURIComponent(password)@mymongobase.net/$collection`;

 // Connect using the connection string
 MongoClient.connect(mongoUrl, useNewUrlParser: true, function(err, db) 
   console.log(err.toString())
 );

我收到身份验证错误。我尝试了几种方法来处理“@”字符并阅读了我认为这是好的文档... 但即使用户和密码是好的,它仍然会失败。

API 是否正确使用?你明白哪里错了吗?

提前致谢。

【问题讨论】:

MongoDB password with "@" in it的可能重复 经过更多调查,@ 没有问题。事实上,当我尝试连接时,Mongo 并没有找到我的超级用户“admin”......如果我创建一个新用户并尝试连接它,就可以了。我不明白为什么当我尝试登录时无法识别超级用户(这似乎是我引擎的每个数据库所共有的)。 【参考方案1】:

好的,我找到了解决方案。 如果你使用:

const mongoUrl = `mongodb://admin:$encodeURIComponent(password)@mymongobase.net/$collection`;

Mongo 将尝试使用 集合中定义的管理员/密码进行连接。

如果你不把集合放在mongo url中:

const mongoUrl = `mongodb://admin:$encodeURIComponent(password)@mymongobase.net`;

然后就可以使用所有mongo引擎上定义的超级用户了。

【讨论】:

以上是关于MongoError - 身份验证错误(带@的密码)的主要内容,如果未能解决你的问题,请参考以下文章

MongoError:命令聚合需要身份验证

MongoError:命令聚合需要身份验证

MongoError: E11000 重复键错误索引

MongoDB 通过 Mlab - MongoError:身份验证失败

MongoError:身份验证失败。 NestJs MongoDb 图集

(节点:32032)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):MongoError:身份验证失败