Alle MySQL-Verbindungen eines users beenden

Oft hat man das Problem in MySQL aus irgendeinem Grund alle Verbindungen eines users beenden zu müssen. Da eine Syntax wie „kill where user like …“ nicht existiert muß man sich mit einem kleinen Workaround behelfen. Man läßt MySQL sozusagen selber ein Killscript schreiben und sendet dieses dann an die Datenbank. Das Killscript erhält man mit folgender Abfrage:

mysql: select concat("KILL ",id,";") from information_schema.processlist where user="root";
 +------------------------+
 | concat("KILL ",id,";") |
 +------------------------+
 | KILL 1234;             |
 | KILL 1235;             |
 +------------------------+
 2 rows in set (0.00 sec)

Um das Script direkt in einer Form zu bekommen die ich sofort wieder an die Datenbank senden kann benutze ich „into outfile“:

mysql: select concat("KILL ",id,";") from information_schema.processlist where user="root" into outfile "/tmp/killscript.sql";
 Query OK, 2 rows affected (0.00 sec)

Nun brauche ich das Ganze nur noch mit „source“ als Abfragefolge wieder an die Datenbank senden:

mysql: source /tmp/killscript.sql;
 Query OK, 0 rows affected (0.00 sec)

Diese Vorgehensweise funktioniert natürlich auch wenn ich z.B. alle Verbindungen zu einer Datenbank oder alle Verbindungen von einem Host beenden möchte, hierzu muß ich nur meinen Select entsprechend anpassen.