从Python Eve连接到受访问控制的MongoDB副本集

时间:2018-07-24 17:21:19

标签: mongodb eve

我有一个Eve应用程序,我想连接到mongodb副本集。通过将MONGO_URI中的settings.py参数设置为mongodb://host/dbName?replicaSet=replicaSetname,我能够做到这一点 但是,既然我已经对副本集启用了访问控制,则似乎无法传递用户凭据。

我正在使用以下格式的uri:

mongodb://user:password@host/dbName?replicaSet=replicaSetName&authSource=admin

最令人恼火的是,当我将此URI直接提供给数据库时,它可以毫无问题地连接并登录。但是,如果我尝试通过eve访问某些内容,则会收到以下错误:

pymongo.errors.OperationFailure: Authentication failed.

我尝试了几种变体,包括在eve中设置MONGO_USERNAMEMONGO_PASSWORD参数。我能想到的唯一可能的问题是,我为eve创建的用户具有有限的权限(在一个数据库上为readWrite)。

1 个答案:

答案 0 :(得分:1)

经过大量的努力,我设法弄清了如何在平安夜进行此操作,它涉及平安夜文档中未提及的一些设置:

MONGO_HOST = 'mypod-1.mongo,mypod-2.mongo,mypod-3.mongo;
MONGO_USERNAME = 'user'
MONGO_PASSWORD = 'pass'
MONGO_DBNAME = 'mydb'
MONGO_AUTH_SOURCE = 'admin'
MONGO_REPLICA_SET = 'mySet'

而且,因为这让我不寒而栗,因此您没有MONGO_URI设置任何设置,甚至没有None,因为夏娃会尝试通过 any < / em>其他设置(如果它找到声明的变量)。