【问题标题】: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”的东西。

【问题讨论】:

    标签: node.js mongodb robo3t


    【解决方案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”修复了它,谢谢!
    猜你喜欢
    • 2019-12-06
    • 2022-11-18
    • 2011-01-08
    • 2020-06-26
    • 2017-02-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多