原因
MySQL8.0版本对密码的加密方式和MySQL5.0的不一样:给大家看一下:
use mysql;
select host, user, authentication_string, plugin from user;
会看到这样一个结果
- host: 列指定了允许用户登录所使用的IP,比如 host=192.168.1.1 这里的意思就是说root用户只能通过192.168.1.1的客户端去访问,而%是个通配符,如果host=192.168.1.%,那么就表示只要是IP地址前缀为192.168.1. 的客户端都可以连接,如果host=%,表示所有IP都有连接权限,在开启远程连接的时候,大部分人都直接把host改成%,省事
- user :用户名
- authentication_string:用户密码(在mysql 5.7.9以后废弃了password字段和password()函数)
- plugin:密码加密方式
大家可以看到,密码的加密方式是:caching_sha2_password
但是之前的版本,密码的加密方式是:mysql_native_password
修改密码
- 禁用密码有效期
alter user 'wfly'@'localhost' password expire never;
- 修改密码
alter user 'wfly'@'localhost' identified with mysql_native_password BY '123456';
- 刷新
flush privileges;
- 官方文档密码修改
https://dev.mysql.com/doc/refman/8.0/en/password-management.html#password-reuse-policy