authSource 在 mongo 数据库 url 中是啥意思?

Posted

技术标签:

【中文标题】authSource 在 mongo 数据库 url 中是啥意思?【英文标题】:What does authSource means in mongo database url?authSource 在 mongo 数据库 url 中是什么意思? 【发布时间】:2017-03-29 06:23:40 【问题描述】:

我正在尝试使用以下连接字符串连接到我的 mongo 数据库

var Mongo_url = 'mongodb://MyUSer:tech@localhost:27017/chatme?authSource=admin';  

我收到错误

 assertionError: null ==  [MongoError: Authentication failed.]
 name: 'MongoError',
 message: 'Authentication failed.',
 ok: 0,
 code: 18,

谁能帮我清除这个“authSource=admin”的东西。

【问题讨论】:

【参考方案1】:

这是包含用户凭据集合的数据库的名称。

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options

这是设置用户名和密码的地方。

【讨论】:

我的用户在 system.users 集合中。因此,根据您的说法,“authSource=admin”应该替换为 authSource=users。对吗?? 不,这是数据库的名称,而不是集合的名称。它默认为您尝试连接的数据库。不带参数也行吗? 是的,它也可以在没有参数的情况下工作。我现在明白了。谢谢【参考方案2】:

我今天花了几个小时试图解决这个问题,不幸的是,这个 SO 帖子没有出现在我的搜索中。那太糟糕了,因为这是对问题有最佳答案的帖子。

我希望通过添加我收到的错误消息来帮助下一个人。

我正在通过 docker-compose yaml 文件启动的 Docker 容器内设置连接。用户名和密码从 .env 文件传递​​到 docker-compose。

有效的连接 URI

mongodb://aUser:aPassword@mevn-app-mongo:27017/myDb?authSource=admin

错误:

SASL SCRAM-SHA-1 authentication failed for aUser on myDb from client 172.25.0.3:37352 ; UserNotFound: Could not find user aUser@myDb

【讨论】:

我在使用 NON-URL-ENCODED Connection SRV String 时收到此错误 就我而言,我试图以“root”身份登录特定数据库,但身份验证失败。在连接字符串的末尾添加“authSource=admin”修复了它,谢谢!

以上是关于authSource 在 mongo 数据库 url 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

db2命令参数with ur

关于UR=A的测试

db2 with ur

展开时字段名称冲突 (_id)

er.or.ir.ur四个字母组合发音有啥规律?

说一下ir,ur,or字母组合分别发啥音?