Cerrar todas las conexiones de un usuario en MySQL

Algunas veces nos encontramos con un usuario en MySQL que esta usando muchas conexiones, más de 20,  y estas estan en estado Sleep. Podríamos copiar cada numero de proceso y agregarle el comando KILL pero esto nos llevaria un poco de tiempo.

Entonces nos preguntamos ¿ como hacemos para cerrar todas las conexiones de un usuario en MySQL ? Gracias a la introduccion del information_schema podemos hacer una busqueda y sacar todos los procesos de un mismo usuario. Veamos el siguiente cuadro.

mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root';
+------------------------+
| concat('KILL ',id,';') |
+------------------------+
| KILL 3101;             |
| KILL 2946;             |
+------------------------+
2 rows in set (0.00 sec)

Como vemos este comando nos va a dar el listado de todas conexiones pero ahora tenemos el problema que no podemos hacer copiado y pegado para ejecutar estos comandos. Para resolver el problema vamos a enviar los resultados a un archivo de texto el cual posteriomente ejecutaremos de un solo.

mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
Query OK, 2 rows affected (0.00 sec)
 
mysql> source /tmp/a.txt;
Query OK, 0 rows affected (0.00 sec)

Con este mismo procedimiento podríamos resolver muchas situaciones en las que ocupamos ejecutar muchas sentencias sin necesidad de preparalas en un editor de texto.