MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLにログイン中のユーザーを一覧表示する2つの方法

MySQLサーバーに現在接続(ログイン)しているユーザーを確認したい場面は、運用やトラブルシューティングの際によくあります。MySQLでは、以下の2つの方法でログイン中のユーザーや実行中のスレッド情報を簡単に一覧表示できます。

方法1:INFORMATION_SCHEMA.PROCESSLIST を使う

標準SQLの形式でプロセス情報を取得したい場合は、INFORMATION_SCHEMA.PROCESSLIST テーブルに対してSELECT文を実行します。この方法のメリットは、通常のSELECT文と同じようにWHERE句やORDER BYを使って絞り込みや並べ替えができる点です。

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

方法2:SHOW PROCESSLIST コマンドを使う

より手軽な方法として、MySQL専用のコマンドである SHOW PROCESSLIST を使用することもできます。構文は以下の通りです。

SHOW PROCESSLIST;

なお、FULL キーワードを付けて SHOW FULL PROCESSLIST; と実行すると、INFOカラムのクエリ文字列が切り詰められずに完全な形で表示されます。

実際の実行例

それでは、上記の構文を実際に実行して、ログイン中のMySQLユーザーを一覧表示してみましょう。

まずは information_schema.processlist を参照するクエリです。

mysql> SELECT * FROM information_schema.processlist;

このクエリを実行すると、次のような結果が出力されます。

+----+-----------------+-----------------+------+---------+--------+-----------------------------+---------------------------------------------+
| ID | USER            | HOST            | DB   | COMMAND | TIME   | STATE                       | INFO                                        |
+----+-----------------+-----------------+------+---------+--------+-----------------------------+---------------------------------------------+
|  8 | root            | localhost:50252 | web  | Query   |      0 | executing                   | select *from information_schema.processlist |
|  4 | event_scheduler | localhost       | NULL | Daemon  | 301832 | Waiting for next activation | NULL                                        |
+----+-----------------+-----------------+------+---------+--------+-----------------------------+---------------------------------------------+
2 rows in set (0.00 sec)

続いて、2つ目の方法である SHOW PROCESSLIST を実行してみます。

mysql> SHOW PROCESSLIST;

実行結果は以下のようになります。

+----+-----------------+-----------------+------+---------+--------+-----------------------------+------------------+
| Id | User            | Host            | db   | Command | Time   | State                       | Info             |
+----+-----------------+-----------------+------+---------+--------+-----------------------------+------------------+
|  4 | event_scheduler | localhost       | NULL | Daemon  | 301842 | Waiting for next activation | NULL             |
|  8 | root            | localhost:50252 | web  | Query   |      1 | starting                    | show processlist |
+----+-----------------+-----------------+------+---------+--------+-----------------------------+------------------+
2 rows in set (0.19 sec)

出力結果の各カラムについて

  • ID: 接続ごとに割り当てられる一意の識別子(スレッドID)
  • USER: 接続しているMySQLユーザー名
  • HOST: 接続元のホスト名とポート番号
  • DB: 現在選択されているデータベース(未選択の場合はNULL)
  • COMMAND: 実行中のコマンド種別(Query、Sleep、Daemonなど)
  • TIME: 現在の状態が続いている時間(秒)
  • STATE: スレッドの現在の状態
  • INFO: 実行中のSQL文(アイドル状態の場合はNULL)

このように、どちらの方法でも現在MySQLサーバーに接続しているユーザーとそのアクティビティを一目で確認できます。特定のユーザーだけを表示したい場合は、方法1のSELECT文にWHERE句を組み合わせると便利です。また、PROCESSLIST権限を持つユーザーはすべてのスレッドを確認できますが、権限がない場合は自分自身のスレッドのみ表示される点に注意してください。

  1. MySQLデータベース内のすべてのテーブルを一覧表示する方法

    ```html ここでは、MySQLデータベース内のすべてのテーブルを一覧表示する方法について解説します。 データベースの選択 データベースを作成した後、そのデータベースにアクセスして使用するには、以下のクエリを実行します。 mysql> USE databaseName Database changed USEステートメントの特徴 USEステートメントはセミコロンを必要としません。これはQUITステートメントと同様の仕様です。ただし、セミコロンを付けても問題はありません。 自分専用のデータベースを作成して使用することも可能ですが、その前にMySQL管理者の権限付与が必要になります。

  2. Linuxでログイン中の全ユーザーを一覧表示する4つのコマンド

    Linuxシステムでは、複数のユーザーが同時に1台のコンピュータへ接続できます。そして、現在誰がシステムにログインしているのかを簡単に確認することも可能です。この記事では、Linuxマシン上のログイン中ユーザーを一覧表示する方法を、代表的な4つのコマンドとともにわかりやすく解説します。1. 「who」コマンドを使う方法whoコマンドを実行すると、現在接続中の各ユーザーの情報が4つの列に分けて表示されます。1列目:ユーザー名2列目:使用中のTTY(端末)3列目:ログインした日時4列目:接続元のホスト名またはIPアドレスまた、-qオプションを付けると、ログイン中のユーザー数だけを簡潔に表示できます