MySQL完整重置密码流程(针对 macOS)

MySQL完整重置密码流程(针对 macOS)

1. 强制停止 MySQL 服务
bash 复制代码
sudo /usr/local/mysql/support-files/mysql.server stop
sudo killall mysqld mysqld_safe  # 确保所有进程停止
2. 以安全模式启动(跳过权限验证)
bash 复制代码
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking &

等待 10 秒让服务完全启动(终端会卡住是正常的,不要关闭)

3. 无密码登录 MySQL
bash 复制代码
/usr/local/mysql/bin/mysql -u root
4. 重置密码(分版本操作)
sql 复制代码
-- 先刷新权限
FLUSH PRIVILEGES;

-- 针对 MySQL 8.0+ 版本
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

-- 针对 MySQL 5.7 及更早版本
UPDATE mysql.user SET authentication_string=PASSWORD('你的新密码') WHERE User='root';
FLUSH PRIVILEGES;
5. 退出并重启服务
sql 复制代码
EXIT;  -- 退出 MySQL
bash 复制代码
sudo killall mysqld  # 停止安全模式
sudo /usr/local/mysql/support-files/mysql.server start  # 正常启动
6. 用新密码登录验证
bash 复制代码
/usr/local/mysql/bin/mysql -u root -p

常见问题解决方案

❌ 如果出现 mysqld_safe 路径错误
bash 复制代码
# 查找实际安装路径
sudo find / -name mysqld_safe 2>/dev/null

# 示例结果可能是:
# /usr/local/mysql-8.0.30-macos12-x86_64/bin/mysqld_safe
# 使用找到的路径替换命令
❌ 如果安全模式启动失败
bash 复制代码
# 检查错误日志(查看具体原因)
tail -n 50 /usr/local/mysql/data/*.err
❌ MySQL 8.0+ 特殊处理

若遇到 ERROR 1396,在安全模式下执行:

sql 复制代码
-- 先删除 root 用户再重建
DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
💡 使用 Homebrew 的额外命令
bash 复制代码
# 停止服务
brew services stop mysql

# 启动服务
brew services start mysql

⚠️ 操作全程需要管理员权限,确保每个 sudo 命令都输入了系统密码。如果仍遇到问题,请提供具体错误信息。

相关推荐
唐青枫4 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
小满8784 天前
5.Mysql事务隔离级别与锁机制
mysql
元Y亨H5 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql
这个DBA有点耶5 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵6 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
SamDeepThinking6 天前
一条UPDATE语句在MySQL 8.0中到底加了几把锁?
后端·mysql·程序员
李白客8 天前
KES新版MySQL兼容能力再升级意味着什么?
mysql·国产数据库
Jim6009 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
GreatSQL10 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql