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 命令都输入了系统密码。如果仍遇到问题,请提供具体错误信息。

相关推荐
Blossom i17 小时前
大数据预处理与采集实验一:使用Python操作MySQL数据库
数据库·mysql
InfinitePlus17 小时前
Docker MySQL搭建一主一从
mysql·docker
坐吃山猪19 小时前
Docker07-MySQL
mysql·docker·容器
少晓年20 小时前
从 MySQL 迁移到人大金仓 KingbaseES:完整指南与实践
数据库·mysql
Zhu7581 天前
使用helm在k8s集群部署MySQL单实例,支持当前所有主版本的最新子版本
mysql·adb·kubernetes
灯澜忆梦1 天前
【MySQL11】进阶篇 | 索引_#3使用规则
数据库·sql·mysql·性能优化
wWYy.1 天前
Mysql:有哪些锁?
数据库·mysql
hey_sml1 天前
MySQL常用操作速记:从字符集到游标全解析
java·开发语言·mysql
云技纵横1 天前
线上接口突然超时,怎么判断卡在 Nginx、线程池、连接池还是 SQL?
后端·sql·mysql
小白说大模型1 天前
Prompt 工程的数学直觉:Embedding 空间中的 Prompt 优化的底层原理
人工智能·mysql·prompt·embedding