无法连接到mongodb usign mongoengine,只读(仅)访问

时间:2017-02-21 10:27:54

标签: python pymongo mongoengine

我使用在linux环境下运行的mongoengine创建的CLI工具

MongoDB = 3.4.1
Python = 2.7.5
PyMongo = 3.4.0
MongoEngine = 0.11.0

我正在连接数据库 使用.ini文件中的信息,如下所示:

[DATABASE]
uri=mongodb://%(user)s:%(password)s@%(host)s/%(dbname)s
dbname=myapp
user=
host=localhost
password=

在Python中:

DB_CONN = mongoengine.connect(conf['dbname'], host=conf['uri'])

目前数据库中有两个用户。具有读取角色的用户usrRO 和具有readWrite角色的用户usrRW。使用时连接到db 用户usrRW .ini文件中的名称和密码一切正常。 但是连接用户usrRO凭证(用户usrRO可以从mongo CLI界面读取数据)导致:

pymongo.errors.OpeartionFailure: not authorized on myapp to execute command 
{ createIndexes: <collection_name>,
  indexes: [ { unique: true, 
               backgroung: false, 
               sparse: false, 
               key: { name: 1 },
               name: "name_1" } ],
  writeConcern: {} }

有没有办法使用用户usrRO凭据或任何其他方式进行连接 到使用mongoengine的只有特权的数据库?

1 个答案:

答案 0 :(得分:0)

我在mongo-engine gitlab问题中找到了答案。 只需添加

'auto_create_index': False

到您的对象元。这可能不适用于复杂的对象结构。