Django数据库迁移时,提示django.db.utils.OperationalError: (2059, .....)等,Django和mysql8.0的相关问题。

mysql8.0对用户密码的加密方式为caching_sha2_password, Django暂时还不支持这种新增的加密方式。在Django中迁移数据库数据时报错,所以只需要将用户加密方式改为老的加密方式即可。

在中间解决问题更改mysql的ssl加密方式(在my.ini中添加了skip_ssl)后,连接mysql出现错误:MySql authentication requires secure connection 身份验证需要安全连接。

解决方案:

打开mysql workbench,登录后点击database,点击ssl 讲use ssl选为NO 即可)

Django数据库迁移时,提示django.db.utils.OperationalError: (2059, .....)等,Django和mysql8.0的相关问题。_第1张图片

这时show variables like "%ssl%"; 表里的have_openssl和have_ssl的value值已经由YES变为了DISABLED。

但是再在pyharm中迁移数据还是报错2059的话就:

1、登录mysql,执行命令:use mysql;然后select user,plugin from user where user="root";会看到当前mysql的加密方式为:caching_sha2_password。

2、然后改掉这个加密方式:alter user ‘root’@‘localhost’ identified with mysql_native_password by "密码";这个密码可能得和Django中的settings.py中设置的database的密码一样。这时再查看加密方式(select user,plugin from user where user="root";),已经改为了mysql_native_password。这样Django就支持了。

3、刷新权限:flush privileges;

注意引号标点是英文的。问题应该就可以解决了。迁移数据库可以正常进行了。参照了两个大佬的方案:明总有和BXS_null。

你可能感兴趣的:(django,python,后端)