mysql 批量kill session

本文介绍了一种通过SQL查询批量获取并终止指定用户在MySQL中所有进程的方法。具体步骤包括使用SQL查询从information_schema.processlist中筛选出特定用户的进程ID,并将这些ID写入外部文件,然后通过source命令执行该文件来实现批量kill操作。

  1. root
    @localhost > select concat('KILL ',id,';') from information_schema.processlist where user=’sam' into outfile '/tmp/a.txt

脚本内容如下:

  1. +------------------------+
  2. | concat('KILL ',id,';') |
  3. +------------------------+
  4. | KILL 31964612; |
  5. | KILL 31964609; |
  6. | KILL 31964611; |
  7. ...
  8. | KILL 31966619; |
  9. | KILL 31966620; |
  10. +------------------------+
  11. 991 rows in set (0.02 sec)
  12. root@localhost >

4.执行上面生成的KILL脚本

  1. root@localhost > source /tmp/a.txt
  2. Query OK, 0 rows affected (0.00 sec)
  3. Query OK, 0 rows affected (0.00 sec)
  4. ……
### 如何以 Root 权限执行 Kill 命令 为了成功使用 `kill` 命令终止其他用户的进程,通常需要具备足够的权限。如果当前用户不具备必要的权限,则可以通过切换到超级用户(root 用户)或者利用提权工具完成此操作。 #### 使用 Sudo 提升权限 对于大多数现代 Linux 发行版,默认情况下可以借助 `sudo` 工具提升权限并执行命令。例如: ```bash sudo kill -9 <PID> ``` 这里 `-9` 表示强制终止信号 (SIGKILL),而 `<PID>` 则代表目标进程 ID[^1]。 #### Switching to the Root User Directly 另一种方法是直接切换至 root 账户后再运行所需指令: ```bash su - kill -9 <PID> ``` 注意,在输入上述任一形式前都需要确认已知相应的密码;另外,“su”单独使用仅改变身份而不加载环境变量设置,加“-”则完全模拟登录过程[^3]。 #### Combining Pgrep with Kill Command 当确切知道要结束的服务名称而非具体编号时,可联合运用pgrep定位对应服务的所有实例再批量处理它们: ```bash pids=$(pgrep service_name) for pid in $pids; do sudo kill -9 "$pid"; done ``` 以上脚本先查找名为service_name的所有进程ID存入数组型变量pids里头,接着遍历这些成员逐一下达杀戮指示[^2]。 针对 MySQL 中遇到的死锁状况下的 KILL 操作同样遵循类似的逻辑框架只是对象变成了 session identifier(SQL线程号)[^4]: ```sql KILL CONNECTION connection_id; -- OR -- KILL QUERY query_id; ``` 然而需要注意的是即使拥有管理员权利也可能遭遇失败情形比如尝试中断处于休眠状态(sleep status)超过一定时限后的连接记录就不会生效[^5]. ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值