在 Python-Eve 中设置 MongoDB 授权配置
Setting MongoDB authorization configuration in Python-Eve
我正在使用 Python-Eve 和一个启用了授权的 MongoDB 实例,所以我需要在 settings.py
中提供 user/pass 凭据以正确初始化 Python-夏娃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.
让它以这种方式工作缺少什么?
好的,我想出了让它工作的错误。用于检查凭据的身份验证数据库与 MONGO_DBNAME
相同,而不是 MONGO_AUTH_DBNAME
值。所以在我的示例中,用户必须存在于 <mongo_db>
数据库中,而不是像我期望的那样存在于 <auth_db>
中。
但是,MONGO_AUTHDBNAME
设置的目的是什么?
MONGO_AUTHDBNAME
对于一些现已弃用的旧 MongoDB 身份验证方案很有用。有关详细信息,请参阅 original pull request discussion.
我正在使用 Python-Eve 和一个启用了授权的 MongoDB 实例,所以我需要在 settings.py
中提供 user/pass 凭据以正确初始化 Python-夏娃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.
让它以这种方式工作缺少什么?
好的,我想出了让它工作的错误。用于检查凭据的身份验证数据库与 MONGO_DBNAME
相同,而不是 MONGO_AUTH_DBNAME
值。所以在我的示例中,用户必须存在于 <mongo_db>
数据库中,而不是像我期望的那样存在于 <auth_db>
中。
但是,MONGO_AUTHDBNAME
设置的目的是什么?
MONGO_AUTHDBNAME
对于一些现已弃用的旧 MongoDB 身份验证方案很有用。有关详细信息,请参阅 original pull request discussion.