从Python Eve连接到访问控制的MongoDB复制集
我有一个Eve应用程序,我想连接到mongodb复制集。我可以通过将从Python Eve连接到访问控制的MongoDB复制集,mongodb,eve,Mongodb,Eve,我有一个Eve应用程序,我想连接到mongodb复制集。我可以通过将settings.py中的MONGO\u URI参数设置为mongodb://host/dbName?replicaSet=replicaSetname 但是,现在我已经对副本集启用了访问控制,似乎无法传入用户凭据 我使用的uri格式如下: mongodb://user:password@host/dbName?replicset=replicaSetName&authSource=admin 最令人恼火的是,当我将这个URI直
settings.py
中的MONGO\u URI
参数设置为mongodb://host/dbName?replicaSet=replicaSetname
但是,现在我已经对副本集启用了访问控制,似乎无法传入用户凭据
我使用的uri格式如下:
mongodb://user:password@host/dbName?replicset=replicaSetName&authSource=admin
最令人恼火的是,当我将这个URI直接提供给数据库时,它会连接并登录而不会出现问题。但是,如果我试图通过eve访问某些内容,我会出现以下错误:
pymongo.errors.OperationFailure:身份验证失败。
我尝试了几种不同的方法,包括在eve中设置
MONGO_用户名
和MONGO_密码
参数。我能想到的唯一可能的问题是,我为eve创建的用户的权限有限(在一个数据库上读写)。经过我的努力,我终于找到了如何在eve上执行此操作,它涉及eve文档中未提及的一些设置:
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
,因为如果eve发现声明了变量,它会尝试将URI用于任何其他设置。干得好。我将研究代码库,或者至少是文档,看看我们是否可以在框架本身中解决这个问题。