缘起

在MySQL 8.04前,执行:SET PASSWORD=PASSWORD(‘[新密码]’);但是MySQL8.0.4开始,这样默认是不行的。因为之前MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。现在我们只需要知道修改修改密码的方式变化了就可以了

解决方法

MySQL8.0以后的版本可以使用以下的命令去修改用户密码

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;

注意事项

“新密码”即要修改的密码

需要注意的是下面,因为我修改的root账号的权限,允许所有远程主机登录,所以用户后面的主机也需要进行相对应的修改:

'root'@'localhost' --》'root'@'%'

'root'@'localhost'中的'root'表示用户名,'localhost'表示可以登录的远程主机,具体的可以使用以下命令进行查询:

use mysql;
select user,host from user;

查询结果示例如下所示:如'root'@'%'即对应第一条结果:

mysql> use mysql;
Database changed
mysql> select user,host from user;
+------------------+-----------------+
| user             | host            |
+------------------+-----------------+
| root             | %               |
| LangedbUser_PbIf | langedbpwd_s400 |
| mysql.infoschema | localhost       |
| mysql.session    | localhost       |
| mysql.sys        | localhost       |
+------------------+-----------------+
5 rows in set (0.00 sec)

拓展知识

重置root用户密码

开启远程访问权限