echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass!'; FLUSH PRIVILEGES;" > /tmp/reset.sql
mysqld --init-file=/tmp/reset.sql --user=mysql &
systemctl stop mysql
mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass!';
FLUSH PRIVILEGES;
EXIT
pkill mysqld
systemctl start mysql
mysqladmin -u root -p'old' password 'NewPass!'
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass!');
-- 或 5.7.6+
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass!';
UPDATE mysql.user SET authentication_string=PASSWORD('NewPass!') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'NewPass!';
FLUSH PRIVILEGES;
datadir/mysql/user.{frm,MYD,MYI}(MyISAM)或 user.ibd(InnoDB)。chown mysql:mysql user.*; chmod 660 user.*。xxd/UltraEdit 開啟 user.MYD。root 記錄,密碼欄位偏移處寫入目標雜湊值(如 565491d704013245 對應 123456)。plugin_dir,CREATE FUNCTION 註冊,執行系統指令修改密碼/建立帳號。secure_file_priv、plugin_dir 唯讀、禁用 UDF。| 版本 | 表欄位 | 雜湊長度 | 函數 |
|---|---|---|---|
| 5.0 / 5.1 | Password | 16/41 字元 | PASSWORD() / OLD_PASSWORD() |
| 5.5 / 5.6 | Password | 41 字元 | PASSWORD() |
| 5.7.6+ | authentication_string | 變長 | 內建雜湊 |
| 8.0 | authentication_string | 變長 | caching_sha2_password |
localhost/Unix Socket 登入。validate_password 強制複雜度。mysql.user 異動(觸發器記錄至審計表)。掌握標準重置流程,非常規手段僅作風險認知,構建全生命週期密碼管理體系。