Django pymongo.errors.OperationFailure:身份验证失败

Django 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

我正在尝试使用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
    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'
        }
    }
}