在 macOS 上安裝 MySQL 後,若直接以 root 身分啟動服務而未指定 --user=mysql 參數,會導致資料目錄產生 root 擁有的檔案,進而引發權限錯誤,造成無法修改 root 密碼、各類存取被拒等問題。本文依據官方文件提供完整修復流程。
若使用 root 帳號啟動 mysqld 且未加
--user=mysql,伺服器會在資料目錄建立 root 擁有的檔案(如日誌),導致後續啟動時發生權限衝突。
/usr/local/mysql/data/ 下,檔名含主機名且以 .pid 結尾),執行:
kill `cat /usr/local/mysql/data/主機名.pid`
/usr/local/ 建立 update_passwd 檔案,內容如下:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
mysqld_safe --init-file=/usr/local/update_passwd &
mysql -u root -p # 輸入新密碼 MyNewPass
--user=mysql 啟動服務,避免權限問題復發