我正在使用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.
让它以这种方式工作缺少什么?
答案 0 :(得分:3)
好的,我弄清楚了它的工作原理是什么问题。用于检查凭据的auth数据库与MONGO_DBNAME
相同,而不是MONGO_AUTH_DBNAME
值。因此,在我的示例中,用户必须存在于<mongo_db>
数据库中,而不是我期望的<auth_db>
中。
但是,MONGO_AUTHDBNAME
设置的目的是什么?