MySQL版本升級時,mysql系統資料庫中的授權表結構可能變更(新增權限欄位、特性支援)。若不同步升級系統表,將導致權限系統異常、新功能無法使用。升級前務必完整備份mysql資料庫。
# 確保MySQL服務正在運行
# 基本執行(root帳號無密碼)
mysql_fix_privilege_tables
# root帳號有密碼時
mysql_fix_privilege_tables --password=root_password
# 執行過程中可能出現 "Duplicate column name" 警告,可忽略
# 完成後必須重啟MySQL服務
service mysql restart
Windows版MySQL不包含mysql_fix_privilege_tables執行檔,改用SQL腳本:
# 假設MySQL安裝於 C:\Program Files\MySQL\MySQL Server 5.1
cd "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警告
# 完成後重啟MySQL服務
net stop mysql
net start mysql
若安裝路徑不同,請調整SOURCE路徑至對應scripts目錄下的mysql_fix_privilege_tables.sql。
SHOW GRANTS FOR 'root'@'localhost';確認權限正常mysql.user表是否包含新版本權限欄位(如Create_routine_priv、Alter_routine_priv等)scripts目錄存在,或從MySQL原始碼套件獲取SUPER權限或root帳號執行