Mac環境下因誤修改Root權限導致無法登錄、或遺忘密碼,是開發常見痛點。本文提供基於MySQL Workbench的可視化修復方案,操作直觀、同時解決密碼與權限雙重問題。
--skip-grant-tables 跳過權限驗證啟動官網下載 macOS版 DMG 安裝。Workbench是官方圖形化管理工具,集成Server Administration、SQL開發、數據建模功能。
系統偏好設置 → 最底部 MySQL 圖標 → Stop MySQL Server
或命令行:sudo /usr/local/mysql/support-files/mysql.server stop
cd /usr/local/mysql/bin/ sudo su ./mysqld_safe --skip-grant-tables &
終端顯示 mysqld_safe Starting mysqld daemon... 表示啟動成功。保持該終端窗口開啟。
Local Recovery127.0.0.13306rootroot@localhost (及 root@127.0.0.1、root@% 等所有Root賬號)% (允許任意Host) 或具體IP,避免Host不匹配拒絕連接--skip-grant-tables 進程:Ctrl+C 或殺掉對應PIDmysql -u root -p 輸入新密碼登錄# 修改密碼 (已知舊密碼時) mysqladmin -u root -p'舊密碼' password '新密碼' # 登錄 mysql -u root -p # 查看當前用戶 SELECT USER(), CURRENT_USER();
| 現象 | 可能原因 | 對應修復 |
|---|---|---|
| ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) | 密碼錯誤 / Host不匹配 / 權限不足 | 按本文流程重置密碼、修復Host、授予DBA角色 |
| Access denied; you need (at least one of) the SUPER privilege(s) | 當前賬號缺少SUPER權限 | Workbench中Administrative Roles勾選DBA/全選 |
| Workbench連接失敗: Can't connect to MySQL server | 服務未啟動 / Port錯誤 / Socket路徑不匹配 | 確認mysqld_safe進程運行、Port 3306、Socket /tmp/mysql.sock |
| 修改後仍無法遠程連接 | Host限制為localhost / 防火牆攔截 | 用戶Host改為% / 開放3306端口 / 檢查bind-address=0.0.0.0 |
localhost/127.0.0.1 登錄,禁用 %mysql.user 表或導出 SHOW GRANTS 便於災難恢復validate_password 插件強制密碼複雜度