在 AMH 面板操作失誤將 Root 用戶 Host 從 localhost 改為 % 後,導致 Root 失去所有權限,甚至無法登入管理。本文記錄利用 skip-grant-tables 跳過權限驗證,直接操作 mysql.user 表恢復 Root 全權限的完整步驟。
修改 Root 遠程訪問權限後,AMYSQL 面板操作導致 Root 所有權限字段變為 N,相當於賬號被鎖定,無法執行任何管理操作。
mysqld_safe --skip-grant-tables & 以跳過權限表啟動 MySQL,隨後無密碼登入,直接更新權限表。
service mysqld stop(避免 pkill 導致 mysqld dead but subsys locked)。mysqld_safe --skip-grant-tables && 表示後台運行,釋放終端。mysql 直接進入。USE mysql;'Y':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';mysql.user 表中 Host='localhost' 和 Host='%' 兩條記錄均需擁有全權限。service mysqld restart。UPDATE user SET Password=PASSWORD('newpwd') WHERE User='root'; FLUSH PRIVILEGES; 並同步更新應用配置文件。
FLUSH PRIVILEGES; 使權限立即生效。