web-dev-qa-db-ja.com

ユーザーごとのアクティブなMySQL接続を表示する

特定のユーザーに対して、特定のデータベースへのアクティブな接続数または開いている接続数を取得するクエリが必要です。私は何時間も探していましたが、今のところ何も思いつきませんでした。私は近くにいるので、ここで試してみました。

  1. SHOW STATUS WHERE `variable_name` = 'Threads_connected';

  2. SHOW STATUS LIKE '%onn%';

  3. SELECT * FROM information_schema.processlist WHERE USER='database_user';

私はウェブホスティング会社で働いていますが、クライアントの1人がmax_user_connections制限なので、トラブルシューティングでは、ユーザーが共有サーバーではないため、ユーザーが現在使用している接続数を知る必要があるのはなぜですか。現在、MySQL(InnoDB)バージョン5.5.36を使用しています。どんな助けでも大歓迎です!

9
Will Hughes

必要なのは、ユーザーとホスト名別の内訳と合計

SELECT IFNULL(usr,'All Users') user,IFNULL(hst,'All Hosts') Host,COUNT(1) Connections
FROM
(
    SELECT user usr,LEFT(Host,LOCATE(':',Host) - 1) hst
    FROM information_schema.processlist
    WHERE user NOT IN ('system user','root')
) A GROUP BY usr,hst WITH ROLLUP;

これは、ホスト名とポート番号をコロンで区切ったホストアドレスを処理します

誰もがrootとしてログインしていないことを願っています

11
RolandoMySQLDBA