在 macOS 上安裝 MySQL 後,若忘記 root 密碼或需初始化,可通過跳過權限表啟動來重置。本文整理了針對 MySQL 5.7 不同版本的標準化操作流程。
創建文件 mysql-init(路徑自定,如 /tmp/mysql-init),根據 MySQL 版本寫入對應語句:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密碼');
cd /usr/local/mysql/bin/
sudo su
# 方式一:使用 init-file 參數(推薦)
mysqld_safe --init-file=/tmp/mysql-init &
# 方式二:手動操作(若方式一失效)
mysqld_safe --skip-grant-tables &
./mysql -u root
mysql> FLUSH PRIVILEGES;
mysql> UPDATE mysql.user
SET authentication_string = PASSWORD('新密碼'),
password_expired = 'N'
WHERE user = 'root' AND host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> QUIT;
./mysql -u root -p
# 輸入剛設定的新密碼,登入成功即完成重置
| 參數 | 作用 |
|---|---|
--init-file | 啟動時自動執行指定 SQL 文件,實現無感重置 |
--skip-grant-tables | 跳過權限檢查,允許無密碼登入修改權限表 |
FLUSH PRIVILEGES | 重新載入授權表,使修改即時生效 |
password_expired = 'N' | 防止新密碼被標記為過期,導致首次登入需強制修改 |
sudo su 切換到 root 執行 mysqld_safe。mysqld 進程,否則端口衝突。PASSWORD() 函數,必須用 ALTER USER。參考官方文檔:Resetting the Root Password: Unix and Unix-Like Systems