_mysql_exceptions.OperationalError: (2059, “Authentication plugin ‘caching_sha2_password‘ cannot be

问题描述: 

        在Linux上写了一个Python脚本连接数据库时报错,原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。

        解决方式:把mysql用户登录密码加密规则还原成mysql_native_password。

解决步骤:

1.登陆mysql:mysql -u root -p,并查看加密方式

mysql>use mysql;

mysql>select user,plugin from user where user='root';

_mysql_exceptions.OperationalError: (2059, “Authentication plugin ‘caching_sha2_password‘ cannot be_第1张图片

2.修改账户密码加密规则并更新用户密码:

  • 修改加密规则(请勿直接复制)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

  • 注意事项:很多帖子都是让直接复制,这里要考虑到之前是否修改过hostname,查看方式:

select user,host from user;

_mysql_exceptions.OperationalError: (2059, “Authentication plugin ‘caching_sha2_password‘ cannot be_第2张图片

我这里修改过,所以应该将修改加密规则语句改为:

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

否则就会报:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

  • 更新一下用户密码

ALTER USER ‘root’@‘localhost(根据自己host替换)’ IDENTIFIED WITH mysql_native_password BY ‘password’;

  •  刷新权限

FLUSH PRIVILEGES;

  • 重置密码

alter user ‘root’@‘localhost(根据自己host替换)’ identified by ‘自定义的密码’;

你可能感兴趣的:(mysql,数据库)