我在启用了授权的mongodb实例中使用python eve,因此需要在settings.py
中提供用户/传递凭据才能正确初始化pythoneve 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
的目的是什么?
关于python - 在Python-Eve中设置MongoDB授权配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33870025/