2017-02-21 13 views
0

Я работаю CLI инструмент, созданный с mongoengine работает на Linux средеНе удается подключиться к MongoDB usign mongoengine с чтением (только) доступом

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

Я подключение к базе данных с информацией в INI-файл, который выглядит так :

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

В Python:

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

Там в настоящее время два пользователя в базе данных. Пользователь usrRO, который прочитал роль и пользователь usrRW, которые имеют readWrite роль. При подключении к db с использованием имя и пароль пользователя usrRW в файле .ini все работает. Но соединяясь с пользователем usrRO учетных данных (пользователь usrRO может считывать данные из интерфейса Монго 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?

ответ

0

Я нашел ответ в вопросах gitlab mongo-engine. Просто добавьте

'auto_create_index': False 

ваших объектов метаданных. Это может не работать для сложных объектов.