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
2、核实下 django 里的写法。 可以试试 127.0.0.1 的用法。 或者再建一个用户,不用root 。
数据库设置的时候,允许本地登录
之前你修改了哪一部分,是不是对某些模型的主键或者外键进行修改,
你的 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 看