一、生成临时密码

当MySQL8安装完成后,为了强化安全性,默认情况下root账号不再具有初始密码,需要通过临时密码先进行登录。使用以下命令可以查看MySQL8初始化时生成的临时密码:

sudo grep 'temporary password' /var/log/mysqld.log

根据输出信息,临时密码输出在第一行,如下所示:

2023-11-09 19:45:00 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xxxxxxxx

二、登录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即可。