mysql8.0以上解决密码错误pycharm连接报错pymysql.err.OperationalError

最近用python跑一个数据库项目,下载的mysql8.0.23。结果报错

pymysql.err.OperationalError: (1290,......)

原因是因为新版mysql的密码验证方式更新了,安装的时候有个很大的感叹号确定加密方式,结果我按着默认安装了,所以就自讨苦吃了。我到现在也没整明白为什么设计新版这种费力不讨好的密码验证。密码
新版mysql使用的caching_sha2_password认证方式,换成原来的mysql_native_password就可以。新版的密码首次输入的密码实际上不是系统的密码,首次输进去那个我也不知道有什么用,实际上新版安装时在mysql8.0.23目录里面的data里会有一个err后缀文件,这个文件有安装时生成的随机密码。如果不修改这个密码,那么每次使用都会生成随机密码,这就导致root下访问不了。
那么怎么解决呢?
参考下面几个博客整理一下:
我为了这个报错前后试了看教程,重装,配环境等等快两天才解决。
所以如果你真的被这破环境搞烦了,想卸载重装:请参考这篇完全卸载,否则二次安装会失败甚至解决不了问题:干净卸载mysql,个人亲测,这一次终于成功了。然后按照教程MySQL的安装与配置——详细教程重装应该密码不会再次改变。


接下来看怎么改。
  1. 主要参考这篇:安装mysql8.0.11以及修改root密码、连接navicat for mysql。如果你现在连mysql都登不进去,就是打开mysql8.0 command line client输入密码就闪退,那么就是密码错了,因为输入的密码不是你的密码而是随机密码。如果你能登进去,那么打开任务管理器,打开服务,看究竟是mysql在运行还是mysql80在运行,一般来说mysql80用你的密码是能进去的,但是没用,pycharm照样连不了数据库,因为mysql才能登上root的账户。如果服务是mysql而且能登进去,跳转到地3步。
    所以首先删除你的mysql里的data文件,里面保存你的数据库,如果有用就提前备份一下。然后以管理员身份运行cmd。
    进入你的mysql\bin下
mysqld --initialize-insecure
  1. 这时候会生成一个data文件,打开里面err后缀文件有个临时密码,不难找搜password就能找到定位,然后用这个打开,或者参考这篇Centos7 在docker中安装Mysql 8.0 的相关问题直接改cnf配置文件跳过密码。
  2. 登录以后查看密码,authentication_string栏显示的是编码加密后的密码。
select host,user,authentication_string from mysql.user;
  1. 然后再看root是不是caching_sha2_password加密方式。plugin栏显示。
SELECT user,host,plugin from mysql.user
  1. 不管是不是mysql_native_password,都得先把authentication_string字段清空:
use mysql;
update user set authentication_string=''  where user='root'
  1. 然后退出重登,输密码时就直接按回车,空密码就能进去。然后修改密码方式为mysql_native_ppassword;
alter user'root'@'localhost' identified with mysql_native_password by '新密码';

然后重启mysql服务。再次查看密码验证方式改掉没,还没有就在mysql下粘贴一个my.ini文件,把default_authentication_plugin改为

default_authentication_plugin=mysql_native_password

然后重试。

  1. 上面操作无误后就可以重启mysql服务,pycharm就能连接到mysql了。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值