修改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

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐