Django pymongo.errors.OperationFailure:身份验证失败
我正在尝试使用django中的MongoDB数据库。为此,我将设置更改为此,我在这里使用mlab 设置.py 但每次我尝试运行迁移时,都会遇到这样的错误。我不知道它来自哪里,我已经提供了正确的用户名和密码。 我还使用pip安装了djongoDjango pymongo.errors.OperationFailure:身份验证失败,django,mongodb,Django,Mongodb,我正在尝试使用django中的MongoDB数据库。为此,我将设置更改为此,我在这里使用mlab 设置.py 但每次我尝试运行迁移时,都会遇到这样的错误。我不知道它来自哪里,我已经提供了正确的用户名和密码。 我还使用pip安装了djongo Traceback (most recent call last): File "manage.py", line 21, in <module> main() File "manage.py", line 17, in main
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
utility.execute()
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\core\management\__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\core\management\base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\core\management\base.py", line 364, in execute
output = self.handle(*args, **options)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\core\management\base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\core\management\commands\migrate.py", line 87, in handle
executor = MigrationExecutor(connection, self.migration_progress_callback)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__
self.build_graph()
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\db\migrations\loader.py", line 212, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\db\migrations\recorder.py", line 73, in applied_migrations
if self.has_table():
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\db\migrations\recorder.py", line 56, in has_table
return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\db\backends\base\introspection.py", line 48, in table_names
return get_names(cursor)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\django\db\backends\base\introspection.py", line 43, in get_names
return sorted(ti.name for ti in self.get_table_list(cursor)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\djongo\introspection.py", line 46, in get_table_list
for c in cursor.db_conn.collection_names(False)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\database.py", line 715, in collection_names
nameOnly=True, **kws)]
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\database.py", line 674, in list_collections
read_pref) as (sock_info, slave_okay):
File "c:\users\adity\appdata\local\programs\python\python37-32\Lib\contextlib.py", line 112, in __enter__
return next(self.gen)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\mongo_client.py", line 1101, in _socket_for_reads
with self._get_socket(server) as sock_info:
File "c:\users\adity\appdata\local\programs\python\python37-32\Lib\contextlib.py", line 112, in __enter__
return next(self.gen)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\mongo_client.py", line 1058, in _get_socket
with server.get_socket(self.__all_credentials) as sock_info:
File "c:\users\adity\appdata\local\programs\python\python37-32\Lib\contextlib.py", line 112, in __enter__
return next(self.gen)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\pool.py", line 1006, in get_socket
sock_info.check_auth(all_credentials)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\pool.py", line 677, in check_auth
auth.authenticate(credentials, self)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\auth.py", line 563, in authenticate
auth_func(credentials, sock_info)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\auth.py", line 540, in _authenticate_default
return _authenticate_scram(credentials, sock_info, 'SCRAM-SHA-1')
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\auth.py", line 262, in _authenticate_scram
res = sock_info.command(source, cmd)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\pool.py", line 579, in command
unacknowledged=unacknowledged)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\network.py", line 150, in command
parse_write_concern_error=parse_write_concern_error)
File "C:\Users\adity\Desktop\crud-django\env\lib\site-packages\pymongo\helpers.py", line 155, in _check_command_response
raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: Authentication failed.
回溯(最近一次呼叫最后一次):
文件“manage.py”,第21行,在
main()
文件“manage.py”,第17行,主
从命令行(sys.argv)执行命令
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\core\management\\uuuu init\uuuu.py”,第381行,从命令行执行
utility.execute()
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\core\management\\uuuu init\uuuu.py”,第375行,在execute中
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\core\management\base.py”,第323行,从\u argv运行
self.execute(*args,**cmd_选项)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\core\management\base.py”,第364行,在execute中
输出=self.handle(*args,**选项)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\core\management\base.py”,第83行,包装为
res=句柄函数(*args,**kwargs)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\core\management\commands\migrate.py”,第87行,位于句柄中
executor=MigrationExecutor(连接、self.migration\u进程\u回调)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\db\migrations\executor.py”,第18行,在uu init中__
self.loader=MigrationLoader(self.connection)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\db\migrations\loader.py”,第49行,在uu init中__
self.build_图()
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\db\migrations\loader.py”,第212行,在构建图中
self.applicated_migrations=recorder.applicated_migrations()
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\db\migrations\recorder.py”,第73行,在应用迁移中
如果self.has_table():
has\U表第56行的文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\db\migrations\recorder.py”
返回self.connection.introspection.table_名称(self.connection.cursor())中的self.Migration.meta.db_表
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\db\backends\base\introspection.py”,第48行,在表\u名称中
返回get_名称(光标)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\django\db\backends\base\introspection.py”,第43行,get\U名称
返回已排序(ti.name表示自我获取表格列表(光标)中的ti)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\djongo\introspection.py”,第46行,在get_table_列表中
对于cursor.db\u conn.collection\u name中的c(False)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\database.py”,第715行,位于集合\u名称中
nameOnly=True,**kws)]
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\database.py”,第674行,在列表集合中
读作(sock\u info,slave\u ok):
文件“c:\users\adity\appdata\local\programs\python\python37-32\Lib\contextlib.py”,第112行,输入__
返回下一个(self.gen)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\mongo\u client.py”,第1101行,位于\u socket\u中,用于\u读取
使用self.\u获取\u套接字(服务器)作为sock\u信息:
文件“c:\users\adity\appdata\local\programs\python\python37-32\Lib\contextlib.py”,第112行,输入__
返回下一个(self.gen)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\mongo\u client.py”,第1058行,位于get\u套接字中
使用server.get_socket(self.\u all_凭据)作为sock_信息:
文件“c:\users\adity\appdata\local\programs\python\python37-32\Lib\contextlib.py”,第112行,输入__
返回下一个(self.gen)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\pool.py”,第1006行,在get\u套接字中
sock\u info.检查\u auth(所有\u凭据)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\pool.py”,第677行,在check\u auth中
身份验证(凭证,自我)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\auth.py”,第563行,在“身份验证”中
验证函数(凭证、存储库信息)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\auth.py”,第540行,默认为
返回(凭证,存储信息"scram-SHA-1")
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\auth.py”,第262行,在\u authenticate\u scram中
res=sock_info.命令(源,cmd)
命令行579中的文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\pool.py”
未确认=未确认)
命令第150行的文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\network.py”
parse_write_concern_error=parse_write_concern_error)
文件“C:\Users\adity\Desktop\crud django\env\lib\site packages\pymongo\helpers.py”,第155行,在检查命令响应中
提升操作失败(消息%errmsg,代码,响应)
pymongo.errors.OperationFailure:身份验证失败。
您必须使用用户名而不是用户
数据库={
“默认值”:{
“引擎”:“djongo”,
'NAME':'test_db',
“用户名”:“用户名”,
“密码”:“密码”,
'主机':'主机',
“端口”:27017,
“AUTH_SOURCE”:“test_db”,
}
}
在最新版本中,使用客户端连接到数据库。
我希望下面的数据库配置将解决您的问题
DATABASES = {
'default': {
'ENGINE': 'djongo',
'ENFORCE_SCHEMA': True,
'LOGGING': {
'version': 1,
'loggers': {
'djongo': {
'level': 'DEBUG',
'propogate': False,
}
},
},
'NAME': 'my_db',
'CLIENT': {
'host': '127.0.0.1',
'port': 27017,
'username': 'XXXXXXXXXX',
'password': "XXXXXXXXXXXXX",
'authSource': 'admin',
'authMechanism': 'SCRAM-SHA-1'
}
}
}
您是否使用提供的凭据验证mongo数据库密码是否正确?是的,密码是否正确我已检查了三次。请尝试以下
DATABASES={{{'default':{'NA
DATABASES = {
'default': {
'ENGINE': 'djongo',
'ENFORCE_SCHEMA': True,
'LOGGING': {
'version': 1,
'loggers': {
'djongo': {
'level': 'DEBUG',
'propogate': False,
}
},
},
'NAME': 'my_db',
'CLIENT': {
'host': '127.0.0.1',
'port': 27017,
'username': 'XXXXXXXXXX',
'password': "XXXXXXXXXXXXX",
'authSource': 'admin',
'authMechanism': 'SCRAM-SHA-1'
}
}
}