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 即可)

这时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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值