一、生成临时密码
当MySQL8安装完成后,为了强化安全性,默认情况下root账号不再具有初始密码,需要通过临时密码先进行登录。使用以下命令可以查看MySQL8初始化时生成的临时密码:
$ sudo grep 'temporary password' /var/log/mysqld.log
根据输出信息,临时密码输出在第一行,如下所示:
2021-08-07T09:44:01.373263Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xxxxxxxx
这里的“xxxxxxxx”就是生成的临时密码,需要记住这一密码,因为在修改root账号密码时会用到。
二、登录MySQL8
登录MySQL8可以使用以下命令:
$ mysql -u root -p
输入之前获取的临时密码,进行登录。如果临时密码已过期,则需要使用以下命令,先进行密码重置:
$ sudo mysqld_safe --skip-grant-tables & $ mysql -u root
使用以上命令,可以跳过权限验证,直接登录到MySQL8,具有超级管理员权限。在这种状态下修改root账号密码,则不需要输入原密码。
三、修改root账号密码
使用以下命令即可修改root账号密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
其中,“new_password”为修改后的新密码。
注意:在MySQL8中,修改root账号密码时须将身份验证方式(auth plugin)改为“mysql_native_password”。这是因为MySQL8默认使用“caching_sha2_password”身份验证插件,而因为不同版本的MySQL使用的身份验证方式可能不同,可以使用以下命令查询:
mysql> select user, plugin from mysql.user;
如果root账号的plugin为“caching_sha2_password”,则需要先将其改为“mysql_native_password”,再进行密码修改:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'root_password'; mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
以上命令将root账号的身份验证方式从“caching_sha2_password”转化为“mysql_native_password”,然后使用新密码“new_password”重新进行了密码设置。
四、刷新权限表
密码修改完成后,使用以下命令刷新MySQL8的权限表,以便修改立即生效:
mysql> FLUSH PRIVILEGES;
完成以上步骤,root账号密码修改就完成了。接下来,使用新密码登录MySQL8即可。