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


87

SQLを介してアクティブユーザーをpostgreSQLデータベースに接続するにはどうすればよいですか?これは、ユーザーIDまたはユーザー数である可能性があります。

回答:


114

(質問)その情報を入手しませんか

select * from pg_user ;

またはビューpg_stat_activityを使用します:

select * from pg_stat_activity;

追加:

ビューは言う:

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

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

そんな感じ。


2
いいえ、それは既知のユーザーのリストであり、現在接続している番号ではありません。
ケルティア2009年

統計コレクターはどうですか?(ビュー名のリンクをたどる)
balexandre 2009年

4
@ mm2010:pg_stat_activity:アクティブユーザーのみ。pg_user:すべてのユーザーを一覧表示
Hao

4
反対票を投じた回答は少し迷い、将来の読者を誤解させる可能性のある情報を提供します。たとえば、pg_userはPostgreSQLデータベースに接続しているアクティブなユーザーを見つけるのに役立ちません。
Brad Koch


7

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

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

これにより、次のようなあらゆる種類のジューシーな情報が得られます(他の人が言及しているように)

  • ユーザーID(列usesysid
  • ユーザー名(usename
  • クライアントアプリケーション名(appname)、その変数を設定するのpsqlが面倒な場合-します:-)
  • IPアドレス(client_addr
  • どの状態にあるか(状態と待機ステータスに関連するいくつかの列)
  • そしてみんなのお気に入り、実行中の現在のSQLコマンド(query
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.