Django mysql 1045_Django链接Mysql 8.0 出现错误(1045:Access denied for user 'root'@'localhost' (using pass....
运行环境: Django版本2.0 ; Mysql 版本 8.0.11;错误代码: django.db.utils.OperationalError: (1045:Access denied for user 'root'@'localhost' (using password: NO)这个错误看网上的说法基本都是由于 数据库的 用户名 和 密码 不正确导致的 ,下面是我在Django Sett.
运行环境: Django版本2.0 ; Mysql 版本 8.0.11;
错误代码: django.db.utils.OperationalError: (1045:Access denied for user 'root'@'localhost' (using password: NO)
这个错误看网上的说法基本都是由于 数据库的 用户名 和 密码 不正确导致的 ,下面是我在Django Setting.py里的设置:
```
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': '3306',
}}
```
这时候进行数据迁移,发现无法链接数据库并且产生了上述的错误代码。
通过启动 mysql 服务, 发现 用户名和密码都正确并且可以使用。
由于Mysql 8.0 的部分语法,密码的加密方式发生了改变,在8.0 中的用户密码采用的是cha2 加密方法。
有可能 是 Django 对这种加密的密码进行编译导致密码设置密码错误。
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'password';
在Mysql 8.0 中,利用上述语句可以更新用户的加密方式为过去版本的方式。执行命令如下:
mysql -u root -p
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
FLUSH PRIVILEGES;
之后吧Django Setting.py 中 password 改成新的密码。
在 终端 运行
python manage.py makemigrations
python manage.py migrate
之后数据库显示链接成功。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)