我有一个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_USERNAME
和MONGO_PASSWORD
参数。我能想到的唯一可能的问题是,我为eve创建的用户具有有限的权限(在一个数据库上为readWrite)。
答案 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>其他设置(如果它找到声明的变量)。