web-dev-qa-db-ja.com

SQL経由でpostgreSQLデータベースに接続しているアクティブユーザーを取得するにはどうすればよいですか?

SQL経由でpostgreSQLデータベースに接続しているアクティブユーザーを取得するにはどうすればよいですか?これは、ユーザーIDまたはユーザー数です。

78
Johan Bresler

(質問)あなたはその情報を得ませんか

select * from pg_user ;

またはビューを使用して pg_stat_activity

select * from pg_stat_activity;

追加:

ビューは言う:

サーバープロセスごとに1行。データベースOID、データベース名、プロセスID、ユーザーOID、ユーザー名、現在のクエリ、クエリの待機ステータス、時間現在のクエリの実行、プロセスが開始された時間、およびクライアントのアドレスとポート番号。パラメーターstats_command_stringがオフにされていない限り、現在のクエリのデータをレポートする列を使用できます。さらに、これらの列は、ビューを調べているユーザーがスーパーユーザーであるか、レポート対象のプロセスを所有しているユーザーと同じ場合にのみ表示されます。

その情報をフィルタリングして取得することはできませんか?データベースの現在のユーザーになります。たとえば、開始実行時間を使用して、最後の5分間のすべてのクエリを取得できます。

そんな感じ。

104
balexandre

Balexandreの情報を使用する:

SELECT usesysid, usename FROM pg_stat_activity;
38
Sven Lilienthal

OPは、特定のデータベースに接続しているユーザーを要求しました

-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity 
  WHERE datname = 'my_great_database';

これにより、 あらゆる種類のジューシーな情報 (他の人が述べたように)など

  • userid(列usesysid
  • ユーザー名(usename
  • クライアントアプリケーション名(appname)、その変数を設定するのが面倒な場合-psqlは:-)
  • IPアドレス (client_addr
  • 状態(状態と待機状態に関連するいくつかの列)
  • みんなのお気に入り、現在実行中のSQLコマンド(query
0
Tom Hundt