Я новичок в использовании Mongoengine с аутентифицированной MongoDB.
У меня есть база данных Mongo под названием 'gambit_test'.Я включил аутентификацию на нем, и у меня есть подходящий пользователь, который может аутентифицироваться в базе данных для выполнения чтения и записи.
Я создал пользователя для gambit_test, используя следующую команду в Mongo Client:
use gambit_test
db.createUser({
user: "gambit_admin",
pwd: "xxxxxx",
roles:[{role: "userAdmin" , db:"admin"}]
})
Когда я захожу в MongoDB для проверки своего статуса пользователя, я использую следующую команду (вход в систему как супер-администратор):
mongo -u sup_admin -p yyyyyyyy
Чтобы проверить мой статус пользователя, вот чтоЯ запускаю:
use gambit_test
show users
Он возвращает следующее:
{
"_id" : "gambit_test.gambit_admin",
"user" : "gambit_admin",
"db" : "gambit_test",
"roles" : [
{
"role" : "readWrite",
"db" : "gambit_test"
},
{
"role" : "dbAdmin",
"db" : "gambit_test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
Внутри моего кода Python test.py
вот что я делаю:
from mongoengine import *
class History(Document):
name = StringField(required=True)
if __name__ == "__main__":
try:
connect('gambit_test')
History.objects().get()
except Exception as e:
connect(host='mongodb://gambit_admin:xxxxxx@localhost' +
':27017/gambit_test')
History.objects().get()
Когда я пытаюсь запустить приведенный выше код Python, я получаю следующую ошибку:
Traceback (most recent call last):
File "test.py", line 12, in <module>
History.objects().get()
File "/home/ubuntu/gambit/genv/lib/python3.6/site-packages/mongoengine/queryset/base.py", line 267, in get
result = six.next(queryset)
File "/home/ubuntu/gambit/genv/lib/python3.6/site-packages/mongoengine/queryset/base.py", line 1484, in __next__
raw_doc = six.next(self._cursor)
File "/home/ubuntu/gambit/genv/lib/python3.6/site-packages/pymongo/cursor.py", line 1189, in next
if len(self.__data) or self._refresh():
File "/home/ubuntu/gambit/genv/lib/python3.6/site-packages/pymongo/cursor.py", line 1104, in _refresh
self.__send_message(q)
File "/home/ubuntu/gambit/genv/lib/python3.6/site-packages/pymongo/cursor.py", line 982, in __send_message
helpers._check_command_response(first)
File "/home/ubuntu/gambit/genv/lib/python3.6/site-packages/pymongo/helpers.py", line 155, in _check_command_response
raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: command find requires authentication
Понятия не имею, почему это происходит.Причина в том, что я могу выполнить обычные функции find () и insert () с помощью клиента Mongo.Но, когда я использую Mongoengine, вещи ломаются ...
Любая помощь будет очень цениться.