MySQL完整重置密碼流程(針對 macOS)
1. 強制停止 MySQL 服務
sudo /usr/local/mysql/support-files/mysql.server stop
sudo killall mysqld mysqld_safe # 確保所有進程停止
2. 以安全模式啟動(跳過權限驗證)
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking &
等待 10 秒讓服務完全啟動(終端會卡住是正常的,不要關閉)
3. 無密碼登錄 MySQL
/usr/local/mysql/bin/mysql -u root
4. 重置密碼(分版本操作)
-- 先刷新權限
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. 退出并重啟服務
EXIT; -- 退出 MySQL
sudo killall mysqld # 停止安全模式
sudo /usr/local/mysql/support-files/mysql.server start # 正常啟動
6. 用新密碼登錄驗證
/usr/local/mysql/bin/mysql -u root -p
常見問題解決方案
? 如果出現 mysqld_safe
路徑錯誤
# 查找實際安裝路徑
sudo find / -name mysqld_safe 2>/dev/null# 示例結果可能是:
# /usr/local/mysql-8.0.30-macos12-x86_64/bin/mysqld_safe
# 使用找到的路徑替換命令
? 如果安全模式啟動失敗
# 檢查錯誤日志(查看具體原因)
tail -n 50 /usr/local/mysql/data/*.err
? MySQL 8.0+ 特殊處理
若遇到 ERROR 1396
,在安全模式下執行:
-- 先刪除 root 用戶再重建
DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY '你的新密碼';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
💡 使用 Homebrew 的額外命令
# 停止服務
brew services stop mysql# 啟動服務
brew services start mysql
?? 操作全程需要管理員權限,確保每個
sudo
命令都輸入了系統密碼。如果仍遇到問題,請提供具體錯誤信息。