核心原理:MySQL 密碼雜湊存於 mysql.user 表,直接替換實體檔案即可重置。
systemctl stop mysqldmv /var/lib/mysql/mysql /var/lib/mysql/mysql.bakuser.frm、user.MYD、user.MYI 至 /var/lib/mysql/mysql/chown -R mysql:mysql /var/lib/mysql/mysql/user.* && chmod 600 /var/lib/mysql/mysql/user.*USE mysql;
UPDATE user SET authentication_string=PASSWORD('NewStrongPass#2024') WHERE User='root';
DELETE FROM user WHERE User='';
DELETE FROM user WHERE Host='%';
FLUSH PRIVILEGES;
killall -TERM mysqld(勿用 -9)mysqld_safe --skip-grant-tables --skip-networking &--skip-networking 關閉網路,防止無授權狀態下被遠端連線。mysql -u root mysqlUPDATE user SET authentication_string=PASSWORD('NewStrongPass#2024') WHERE User='root';
FLUSH PRIVILEGES;
mysqladmin shutdown && systemctl start mysqlduser.MYD(不推薦,極高風險)直接編輯二進位資料檔,需精確定位密碼雜湊位移,且易破壞索引結構。僅供極端情況參考,強烈建議使用方案二。
chown mysql:mysql 且 chmod 600,否則報錯「Table 'user' is read only」。authentication_string 取代 Password),啟動失敗。user 表新增 plugin 欄位(mysql_native_password / caching_sha2_password),手動 UPDATE 時需同步設定。ca.pem、server-cert.pem、server-key.pem。dba@localhost 擁有 SUPER、GRANT OPTION,日常運維不動 root。validate_password 元件強制密碼複雜度與過期策略。