-- 1. 產生 KILL 語句
SELECT CONCAT('KILL ', id, ';')
FROM information_schema.processlist
WHERE user = 'root' AND state = 'Locked'; -- 可加更多條件
-- 2. 導出到檔案
SELECT CONCAT('KILL ', id, ';')
FROM information_schema.processlist
WHERE user = 'root'
INTO OUTFILE '/tmp/kill_list.sql';
-- 3. 執行
SOURCE /tmp/kill_list.sql;
information_schema.processlist 表
-- 找執行超過 60 秒的查詢
SELECT id, user, host, db, command, time, state, LEFT(info, 100)
FROM information_schema.processlist
WHERE time > 60 AND command != 'Sleep';
-- 找特定資料庫的長連線
SELECT id FROM information_schema.processlist
WHERE db = 'my_db' AND time > 300;
PROCESS 權限查看所有進程CONNECTION_ADMIN (MySQL 8.0+) 或 SUPER (舊版) 執行 KILL
#!/bin/bash
# 長查詢自動 Kill (謹慎使用!)
LONG_QUERY=300 # 秒
mysql -e "SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE time > $LONG_QUERY AND command='Query' AND user='app_user' INTO OUTFILE '/tmp/auto_kill.sql';"
mysql -e "SOURCE /tmp/auto_kill.sql;"
警告:生產環境自動 Kill 風險極高,建議改為**告警通知**人工介入。