MySQL 版本升級可能引入新權限列、新特性(如事件調度器、插件架構),舊版 mysql 系統表結構不匹配會導致權限異常、新功能不可用。**升級前必須備份 mysql 庫**。
# 服務必須運行中
mysql_fix_privilege_tables
# 若 root 有密碼
mysql_fix_privilege_tables --password=root_password
腳本會自動執行所有必要的 ALTER TABLE、INSERT 等 DDL/DML,將系統表結構遷移至當前版本標準。運行過程中出現 Duplicate column name 警告屬正常,**可忽略**。
完成後:**重啟 MySQL 服務** 使變更生效。
MySQL Windows 發布包含 mysql_fix_privilege_tables.sql,使用 mysql 客戶端執行:
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql" -u root -p mysql
mysql> SOURCE C:/Program Files/MySQL/MySQL Server 5.1/scripts/mysql_fix_privilege_tables.sql;
根據實際安裝路徑調整路徑。輸入 root 密碼後執行,同樣忽略 Duplicate column name 警告,最後重啟服務。
SHOW GRANTS FOR 'root'@'localhost'; 權限顯示正常。CREATE EVENT、INSTALL PLUGIN)。mysql 库(mysqldump --routines --events mysql > mysql_pre_upgrade.sql)。