Mac(Sonoma 14.5)重置MySQL 8.4.0 root密码失败求助
MySQL 8.4.0(Mac Sonoma 14.5)重置root密码问题解决
你操作里的核心错误
- PASSWORD()函数早就被删了:MySQL 8.0及以后版本彻底移除了
PASSWORD()函数,用它肯定触发语法错误。 - 没指定用户的Host字段:MySQL里用户是「用户名@主机」的组合,
root@localhost和root@%是两个完全独立的用户,你之前只按User='root'修改,可能改的不是你要登录的那个用户。 - 跳过权限表模式下没刷权限:用
--skip-grant-tables启动的MySQL,直接执行ALTER USER会报1290错误,必须先刷新权限表才能改用户。 - 改完表没刷权限就重启:执行
UPDATE修改用户表后,没跑FLUSH PRIVILEGES;,修改没同步到内存,重启后等于白改。
正确的重置流程
1. 彻底停掉MySQL服务
先确保没有残留进程:
# 用官方脚本停止 sudo /usr/local/mysql/support-files/mysql.server stop # 检查是否有残留,有就杀掉 ps aux | grep mysqld sudo kill -9 [进程ID]
2. 启动MySQL并跳过权限验证
开个新终端,执行:
cd /usr/local/mysql/bin sudo ./mysqld_safe --skip-grant-tables --skip-networking &
等终端输出mysqld_safe Logging to '/usr/local/mysql/data/[你的主机名].err'.就说明启动成了。
3. 无密码登录并修改用户
再开一个终端,无密码进MySQL:
cd /usr/local/mysql/bin ./mysql -u root
进去后按顺序执行:
# 切到系统数据库 USE mysql; # 先查清楚root用户的Host,确认要改哪个(一般是root@localhost) SELECT User, Host FROM user WHERE User='root'; # 清空目标用户的认证字符串(Host改成你查到的内容) UPDATE user SET authentication_string='' WHERE User='root' AND Host='localhost'; # 刷新权限,让修改生效 FLUSH PRIVILEGES; # 退出 QUIT;
4. 重启MySQL到正常模式
先关掉跳过权限的实例:
cd /usr/local/mysql/bin sudo ./mysqladmin -u root shutdown
再正常启动:
sudo /usr/local/mysql/support-files/mysql.server start
5. 设置新密码(8.0+正确写法)
无密码登录MySQL:
cd /usr/local/mysql/bin ./mysql -u root
用下面两种方法的任意一种设置密码:
方法1(推荐):ALTER USER
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
方法2:SET PASSWORD
SET PASSWORD FOR 'root'@'localhost' = '你的新密码';
设置完刷一下权限再退出:
FLUSH PRIVILEGES; QUIT;
6. 验证连接
终端测试登录:
cd /usr/local/mysql/bin ./mysql -u root -p
输入新密码能进去就成了,Workbench也可以正常连接了。
常见坑排查
- 还是报
ERROR 1396:再查一遍SELECT User, Host FROM user WHERE User='root';,确认是不是改了正确的用户;如果有多个root用户(比如root@%),不需要远程登录的话可以删掉:DROP USER 'root'@'%';。 - 启动
mysqld_safe报错:看错误日志/usr/local/mysql/data/[你的主机名].err,一般是有残留进程或者权限问题。
内容的提问来源于stack exchange,提问作者conni
相关产品推荐
相关产品推荐

