【问题标题】:Setting MongoDB authorization configuration in Python-Eve在 Python-Eve 中设置 MongoDB 授权配置
【发布时间】:2015-11-23 11:30:35
【问题描述】:

我将 Python-Eve 与启用了授权的 MongoDB 实例一起使用,因此我需要在 settings.py 中提供用户/密码凭据以正确初始化 Python-Eve API。

如果使用MONGO_URI 全局配置设置,如here 所述声明数据库端点,它可以正常工作:

MONGO_URI = 'mongodb://<someuser>:<somepass>@<host>/<auth_db>'

但如果我尝试根据 Eve 文档使用另一种可能的方式,即在 settings.py 中声明每个部分或 URI 的单独设置,如下所示:

MONGO_HOST = <host>
MONGO_PORT = 27017
MONGO_DBNAME = <mongo_db>
MONGO_USERNAME = <someuser>
MONGO_PASSWORD = <somepass>
MONGO_AUTHDBNAME = <auth_db>

我收到如下错误:

pymongo.errors.OperationFailure: command SON([('saslStart', 1), ('mechanism', 'SCRAM-SHA-1'), ('autoAuthorize', 1), ('payload', Binary(b'n,,n=root,r=MzcxMTQ1MTM3MTExNDYwNg==', 0))]) on namespace testapp.$cmd failed: Authentication failed.

让它以这种方式工作缺少什么?

【问题讨论】:

    标签: python mongodb pymongo eve


    【解决方案1】:

    好的,我想出了使它起作用的问题所在。用于检查凭据的 auth 数据库与 MONGO_DBNAME 相同,而不是 MONGO_AUTH_DBNAME 值。所以在我的示例中,用户必须存在于&lt;mongo_db&gt; 数据库中,而不是我所期望的&lt;auth_db&gt; 中。

    那么,MONGO_AUTHDBNAME 设置的目的是什么?

    【讨论】:

      【解决方案2】:

      MONGO_AUTHDBNAME 对于一些现已弃用的旧 MongoDB 身份验证方案很有用。如需更多信息,请参阅original pull request discussion

      【讨论】:

        猜你喜欢
        • 2014-10-09
        • 2019-11-06
        • 2016-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-09
        • 1970-01-01
        • 2014-07-26
        相关资源
        最近更新 更多