【问题标题】:Cannot connect to mongodb usign mongoengine with read(only) access无法使用具有只读访问权限的 mongoengine 连接到 mongodb
【发布时间】:2017-07-10 22:10:58
【问题描述】:

我有在 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。使用连接到数据库时 .ini 文件中的用户 usrRW 名称和密码一切正常。 但是使用用户 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 到具有就绪权限的数据库?

【问题讨论】:

    标签: python pymongo mongoengine


    【解决方案1】:

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

    'auto_create_index': False
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 2017-02-09
      • 2023-04-03
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多