You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS8下MySQL8.0.24重置root密码失败求助

问题:CentOS 8.0下MySQL 8.0.24重置root密码失败

当前MySQL的user表内容:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

尝试执行密码重置命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY '111';

报错:

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

改用UPDATE命令:

update mysql.user set authentication_string='111' where user='root';

执行成功后刷新权限:

FLUSH PRIVILEGES;

查询user表可见root的authentication_string为明文111,但正常启动MySQL后用密码111登录时:

mysql -u root -h localhost -p

报错:

ERROR 1045 (28000): Access denied for user 'root'@'localhost'

正确的密码重置流程

  1. 停止当前MySQL服务
systemctl stop mysqld
  1. 启动MySQL并跳过权限验证(添加--skip-networking避免外部连接风险)
mysqld_safe --skip-grant-tables --skip-networking &
  1. 无密码登录MySQL
mysql -u root
  1. 切换到系统库mysql
USE mysql;
  1. 刷新权限(解决ALTER USER报错1396的关键步骤)
FLUSH PRIVILEGES;
  1. 使用ALTER USER设置新密码(替换YourNewPassword为你的目标密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
  1. 再次刷新权限
FLUSH PRIVILEGES;
  1. 退出MySQL
EXIT;
  1. 终止安全模式的MySQL进程,启动正常服务
pkill mysqld
systemctl start mysqld
  1. 使用新密码登录验证
mysql -u root -p

问题原因说明

  • ALTER USER报错1396:在跳过权限验证的启动模式下,MySQL未加载权限表,必须先执行FLUSH PRIVILEGES让系统识别用户对象,才能执行ALTER USER操作。
  • UPDATE命令无效:MySQL 8.0的authentication_string字段存储的是经过SHA-256哈希处理的密码值,直接设置明文会导致登录时验证失败,必须通过ALTER USER或SET PASSWORD命令让系统自动生成正确的哈希值。

内容的提问来源于stack exchange,提问作者Youshikyou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:37:47