发布于2026-08-18 阅读(0)
扫一扫,手机访问
在CentOS系统上重置MySQL root密码,关键的三步是「跳过权限验证→登录修改→恢复安全」,但要注意严格匹配MySQL版本。5.7及以下版本需使用UPDATE mysql.user SET Password=PASSWORD('新密码') WHERE User='root';,而8.0及以上版本则得用ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';。此外,还需留意authentication_string字段与caching_sha2_password插件的兼容性问题。

直接说结论:CentOS 上重置 MySQL root 密码,核心是「跳过权限验证 → 登录修改 → 恢复安全」三步,但具体命令和 SQL 语句必须匹配你的 MySQL 版本,否则会报错或无效。
很多人卡在登录后执行 UPDATE user SET Password=... 或 ALTER USER 报错,根本原因是版本不兼容:
Password,用 PASSWORD() 函数加密,语句形如:UPDATE mysql.user SET Password=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES;Password 字段已移除,改用 authentication_string,且必须指定 host(常见为 'localhost'),语句应为:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES;Client does not support authentication protocol 错误,说明客户端不支持默认的 caching_sha2_password 插件,需额外执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';不能只改 /etc/my.cnf 加 skip-grant-tables 就完事——有些系统(尤其是 systemd 管理的服务)会忽略该配置,或因并发启动失败。稳妥做法分情况:
/etc/my.cnf,在 [mysqld] 下新增一行:skip-grant-tablessystemctl start mysqld。注意:必须确保没有其他 mysqld 进程残留,否则启动失败。systemctl stop mysqld,然后手动以安全模式启动:mysqld --skip-grant-tables --skip-networking --user=mysql &--skip-networking 能防止远程连接,提升临时安全性。很多人重启服务后仍无法用新密码登录,问题往往出在收尾动作遗漏:
FLUSH PRIVILEGES; —— 否则修改只存在内存,未写入权限表。skip-grant-tables 行,而是注释掉它:# skip-grant-tables,避免配置语法错误导致 mysqld 启动失败。mysql -u root -p,还要验证插件是否匹配:SELECT user, host, plugin FROM mysql.user WHERE user='root';plugin 是 caching_sha2_password 但客户端老旧,就得换回 mysql_native_password。整个过程最易被忽略的是版本判断和插件兼容性——连 mysql --version 都没确认就动手,大概率白忙一场。操作前花 10 秒查清版本和认证插件,比反复重启省半小时。
下一篇:Ubuntu如何清除终端屏幕内容
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9