MySQL

MySQL で特定のユーザのプロセスを一括で削除する

More than 1 year has passed since last update.

結論から

mysql -h {DB_ENDPOINT} {DB_NAME} -u {USER_NAME} -p -N -e "SELECT GROUP_CONCAT(ID) FROM information_schema.PROCESSLIST WHERE \`USER\` = '{USER_NAME}';"| awk '{print $1}' | xargs -I{} mysqladmin kill {} -h {DB_ENDPOINT} {DB_NAME} -u {USER_NAME} -p


MySQL

-N のオプションをつけることで、ヘッダー出力をさせないようにすることができます。

-e のオプションで任意のSQLを実行。

SELECT GROUP_CONCAT(ID) FROM information_schema.PROCESSLIST WHERE \USER\= '{USER_NAME}';

特定ユーザの実行プロセスを取得してカンマ区切り(,)で表示


awk

awk '{print $1}' 取得結果が | 1,2,3,4 | のようになるので真ん中だけ取得するために実行


xargs

-I のオプションで引数として渡す位置を指定できるパラメータを指定。今回は {}


mysqladmin

mysql のコマンドではプロセスキルの kill を複数IDに対して実行できなかったが、mysqladminなら実行できたので使用。