LoginSignup
1
0

More than 5 years have passed since last update.

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

Posted at

結論から

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なら実行できたので使用。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0