在 AMH 面板的 AMysql 中將 root 帳號的 Host 改為 % 以開放遠端連線,結果導致 root 所有權限被清空(所有權限欄位變為 N),等同帳號被鎖定,無法執行任何操作。
pkill 導致 mysqld dead but subsys locked):
service mysqld stop
mysqld_safe --skip-grant-tables &
mysql -u root
USE mysql;
-- 方案 A:逐項授予所有權限(適用於權限殘留情況)
UPDATE user SET Select_priv='Y', Insert_priv='Y', Update_priv='Y', Delete_priv='Y',
Create_priv='Y', Drop_priv='Y', Reload_priv='Y', Shutdown_priv='Y',
Process_priv='Y', File_priv='Y', Grant_priv='Y', References_priv='Y',
Index_priv='Y', Alter_priv='Y', Show_db_priv='Y', Super_priv='Y',
Create_tmp_table_priv='Y', Lock_tables_priv='Y', Execute_priv='Y',
Repl_slave_priv='Y', Repl_client_priv='Y', Create_view_priv='Y',
Show_view_priv='Y', Create_routine_priv='Y', Alter_routine_priv='Y',
Create_user_priv='Y', Event_priv='Y', Trigger_priv='Y'
WHERE User='root';
-- 方案 B:若方案 A 執行報錯,可改用 REPLACE 重建 root 帳號(需包含 authentication_string 欄位)
FLUSH PRIVILEGES;
EXIT;
service mysqld restart
登入後執行 SHOW GRANTS FOR 'root'@'%'; 確認權限完整。若順手修改密碼,記得同步更新應用程式配置檔。
mysql.user 表中 Host 為 localhost 與 % 兩筆記錄皆需擁有完整權限。mysql 系統資料庫。password 欄位已改為 authentication_string,語法需調整。