| 列名 | 含义 | 单位/格式 | 示例值 |
|---|---|---|---|
| Id | 连接的唯一标识符(线程ID) | 整数(无单位) | 12345 |
| User | 执行该连接操作的 MySQL 用户名 | 字符串(无单位) | 'app_user'、'root' |
| Host | 客户端来源地址 (格式:[IP或主机名]:[客户端端口]) |
字符串: - TCP/IP 连接:IP:端口(如 192.168.1.10:5532) - Unix Socket 连接:localhost(无端口) |
'192.168.1.100:51234' |
| db | 当前连接默认使用的数据库 | 字符串(NULL 表示未选择数据库) |
'orders_db'、NULL |
| Command | 当前连接正在执行的命令类型 | 字符串(常见值): - Query:执行SQL - Sleep:空闲连接 - Binlog Dump:主从复制 - Connect:连接中 |
'Query'、'Sleep' |
| Time | 已执行/空闲时间 : - 非 Sleep:当前命令运行时间 - Sleep:空闲时间 |
秒(seconds) | 15(执行中)、350(空闲中) |
| State | 连接当前状态(操作描述) | 字符串(常见值): - Sending data:处理/发送数据 - Locked:等待锁 - Writing to net:写入网络 - NULL:空闲 |
'Sending data'、NULL |
| Info | 正在执行的 SQL 语句(前100字符左右) | 字符串(NULL 表示未执行语句) |
'SELECT * FROM orders...' |
KILL 命令详解
用于终止 MySQL 连接或查询。
语法:
sql
KILL [CONNECTION | QUERY] processlist_id;
参数说明:
| 参数 | 作用 | 示例 |
|---|---|---|
无参数 或 CONNECTION |
终止整个连接(断开客户端,回滚未提交事务) | KILL 123; |
QUERY |
仅终止当前查询(连接保持,可继续执行新命令) | KILL QUERY 456; |
processlist_id |
要终止的线程ID(来自 SHOW PROCESSLIST 的 Id 列) |
123、456 |
使用场景:
-
终止异常查询 :
sqlKILL QUERY 789; -- 停止耗时查询,连接不中断 -
踢出危险连接 :
sqlKILL 101; -- 强制断开用户连接(权限变更后立即生效) -
清理空闲连接 :
sqlKILL 202; -- 断开长时间空闲的连接(配合 `Time` 列判断)
权限要求:
SUPER权限 (MySQL 5.7)或CONNECTION_ADMIN权限(MySQL 8.0+)才能终止其他用户的连接。
注意事项:
- 终止大事务可能导致回滚耗时较长(检查
State是否为Rolling back)。 - 系统关键线程(如复制线程
Binlog Dump)被终止可能导致服务异常。 - 无法终止自己的当前连接(需另开会话操作)。
操作流程示例
-
查看活动连接 :
sqlSHOW FULL PROCESSLIST; -- 显示完整SQL(Info列) -
定位问题连接 :
- 高
Time值 +Query命令 → 长时间运行查询 - 高
Time值 +Sleep命令 → 空闲连接 - 危险SQL(如
DROP TABLE) → 立即终止
- 高
-
执行终止操作 :
sqlKILL 303; -- 终止整个连接 KILL QUERY 404; -- 仅终止查询
📌 提示:生产环境操作前务必确认连接用途,避免误杀重要任务!