修改mysql8.0用户认证方式为mysql_native_password,导致密码一直错误,也无法更改密码的办法。
因公司项目特殊性,使用python部署离线环境后,链接mysql8.0时提示缺少cryptography安装包
原因是:MySQL服务器配置了caching_sha2_password认证方式(MySQL 8.0+的默认认证方式)
但是Python环境中缺少cryptography包,这是PyMySQL处理这种认证方式所必需的依赖。

这个时候离线环境重新打包再导入就很麻烦了。故就修改了mysql认证方式,修改之后所有客户端全部断联,账户密码错误,修改密码还挺提示operation alter user failed for root@localhost

这里给出整体的解决方案:

mysql命令根据你安装时配置不同,调用的名称也不相同,有的叫mysqld、mysql80、mysql8等等等等,你可以去服务里查看。

  1. 停止mysql
    net stop mysql
  2. 执行命令启用跳过密码登录mysql
    mysqld --console --skip-grant-tables --shared-memory
  3. 进入mysql依次执行下方命令
use mysql;
update user set authentication_string='' where user='root';
quit;
net start mysql
mysql -u root -p
  1. 到此应该可以直接进入mysql了,你也可以使用各种可视化管理工具进行测试。
  2. 修改mysql密码及认证方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
quit;
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐