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 即可)
这时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。