MySQL8如何修改root密码详解
一、生成临时密码
当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即可。