django执行python3 manage.py makemigrations时报Access denied for user 'root'@'localhost'

问题遇到的现象和发生背景

django执行python3 manage.py makemigrations时报Access denied for user 'root'@'localhost'

问题相关代码,请勿粘贴截图

python3 manage.py makemigrations

运行结果及报错内容
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.9/dist-packages/django/db/backends/base/base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.9/dist-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "/usr/local/lib/python3.9/dist-packages/MySQLdb/__init__.py", line 123, in Connect
    return Connection(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/MySQLdb/connections.py", line 185, in __init__
    super().__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (1698, "Access denied for user 'root'@'localhost'")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/day03/mysite3/manage.py", line 21, in <module>
    main()
  File "/home/day03/mysite3/manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.9/dist-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.9/dist-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.9/dist-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.9/dist-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.9/dist-packages/django/core/management/base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/django/core/management/commands/makemigrations.py", line 101, in handle
    loader.check_consistent_history(connection)
  File "/usr/local/lib/python3.9/dist-packages/django/db/migrations/loader.py", line 283, in check_consistent_history
    applied = recorder.applied_migrations()
  File "/usr/local/lib/python3.9/dist-packages/django/db/migrations/recorder.py", line 73, in applied_migrations
    if self.has_table():
  File "/usr/local/lib/python3.9/dist-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 "/usr/local/lib/python3.9/dist-packages/django/db/backends/base/base.py", line 256, in cursor
    return self._cursor()
  File "/usr/local/lib/python3.9/dist-packages/django/db/backends/base/base.py", line 233, in _cursor
    self.ensure_connection()
  File "/usr/local/lib/python3.9/dist-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.9/dist-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.9/dist-packages/django/db/backends/base/base.py", line 217, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.9/dist-packages/django/db/backends/base/base.py", line 195, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.9/dist-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection
    return Database.connect(**conn_params)
  File "/usr/local/lib/python3.9/dist-packages/MySQLdb/__init__.py", line 123, in Connect
    return Connection(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/MySQLdb/connections.py", line 185, in __init__
    super().__init__(*args, **kwargs2)
django.db.utils.OperationalError: (1698, "Access denied for user 'root'@'localhost'")


我的解答思路和尝试过的方法

网上找了一些方法,但是怎么试都不对,用户和密码应该没问题,>mysql -uroot -p 可以登录

我想要达到的结果

请教遇到过相同问题并加以解决了的同道中人分享经验做法,在此谢过!

mysql 数据库, root用户能正常登录吗? 如能正常登录,检查下django 数据库部分的设置。

这bug我也不是很清楚,这有个和你遇到同样问题的迷迷糊糊解决了,链接给你
https://blog.csdn.net/slq1023/article/details/80370394

1、检查下user表,看看root 对应的 host 有没有 localhost

img

2、核实下 django 里的写法。 可以试试 127.0.0.1 的用法。 或者再建一个用户,不用root 。

img

数据库设置的时候,允许本地登录

之前你修改了哪一部分,是不是对某些模型的主键或者外键进行修改,

你的 user 表里, 允许了 localhost , 但没有允许 127.0.0.1
你在django 里是用127.0.0.1
你给 root 再增加一个 127.0.0.1 试试

GRANT ALL ON dm.* TO 'root'@'127.0.0.1';

dm 改成你的数据库名称 , 用show databases 看