新安裝 MySQL 時 root 可能有隨機密碼,或因久未登入忘記密碼。本文提供三種重置方案,涵蓋 Linux/Windows,附常見錯誤排查。
cat /root/.mysql_secret # 輸出範例:The random password for root is: xYz9#AbC mysql -u root -p'xYz9#AbC'
首次登入後建議立即修改密碼。
# 1. 停止服務
service mysqld stop
# 2. 跳過授權表啟動
mysqld_safe --skip-grant-tables &
# 3. 無密碼登入
mysql -u root
# 4. 重置密碼
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> QUIT;
# 5. 正常重啟
service mysqld restart
注意:MySQL 5.7+ 欄位為 authentication_string,5.6 為 password。
# 1. 編輯配置 vim /etc/my.cnf [mysqld] skip-grant-tables # 2. 重啟 service mysqld restart # 3. 登入重置(同方案二步驟 3-4) # 4. 註釋掉 skip-grant-tables 並重啟 # 5. 正常登入驗證
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
解決:
SET PASSWORD = PASSWORD('NewPass123!');
-- 或
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
my.ini(通常在安裝目錄)[mysqld] 區段加入 skip-grant-tablesbin 目錄執行 mysql -u rootskip-grant-tables 並重啟服務skip-grant-tables,否則任何人可免密登入mysql_secure_installation 移除匿名用戶、禁止 root 遠端登入、刪除 test 庫