MySQL 8.0.13 root密码无法重置及认证失败求助
解决Homebrew安装的MySQL 8.0.13 root密码重置失败问题
别担心,我之前也踩过Homebrew装MySQL 8.x的权限坑,给你一套亲测有效的解决步骤:
步骤1:彻底停止MySQL服务
先确保所有MySQL进程都停干净,避免后续启动冲突:
brew services stop mysql # 如果上面命令没生效,强制杀掉进程 sudo pkill mysqld
步骤2:以安全模式启动MySQL(跳过权限表)
注意不要用mysql.server start --skip-grant-tables,Homebrew的启动脚本不支持这么传参数,直接用mysqld_safe启动:
sudo mysqld_safe --skip-grant-tables --skip-networking &
加--skip-networking是防止重置过程中被外部连接干扰,更安全。
步骤3:无密码登录MySQL
此时不需要密码就能直接进入MySQL控制台:
mysql -u root
步骤4:重置root用户的认证信息
MySQL 8.0默认用caching_sha2_password插件,这可能是你之前认证失败的核心原因之一。先切换到系统库,更新用户表:
USE mysql; -- 清空密码字段,切换为兼容性更好的mysql_native_password插件 UPDATE user SET authentication_string = NULL, plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost'; -- 刷新权限,让临时权限系统生效 FLUSH PRIVILEGES;
步骤5:设置新的root密码
现在就可以正常修改密码了,把YourNewSecurePassword替换成你想要的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewSecurePassword';
步骤6:恢复正常启动
退出MySQL,停止安全模式进程,再正常启动服务:
exit sudo pkill mysqld brew services start mysql
验证登录
用新密码试试登录:
mysql -u root -p
输入你刚设置的密码,应该就能成功进入MySQL了。
为什么之前的操作失败?
你之前直接在--skip-grant-tables模式下执行ALTER USER报错,是因为MySQL跳过权限表时,权限系统处于完全禁用状态,无法执行用户修改操作。必须先更新系统表并刷新权限,让权限系统临时恢复,才能修改密码。另外MySQL 8.0的认证插件变化,也可能导致你之前设置的密码无法正常匹配认证规则。
内容的提问来源于stack exchange,提问作者awoodrum87
相关产品推荐
相关产品推荐

