SQLを介してアクティブユーザーをpostgreSQLデータベースに接続するにはどうすればよいですか?これは、ユーザーIDまたはユーザー数である可能性があります。
回答:
(質問)その情報を入手しませんか
select * from pg_user ;
またはビューpg_stat_activityを使用します:
select * from pg_stat_activity;
追加:
ビューは言う:
サーバープロセスごとに1行で、データベースOID、データベース名、プロセスID、ユーザーOID、ユーザー名、現在のクエリ、クエリの待機ステータス、現在のクエリの実行が開始された時刻、プロセスが開始された時刻、クライアントのアドレスとポート番号。パラメータstats_command_stringがオフになっていない限り、現在のクエリに関するデータを報告する列を使用できます。さらに、これらの列は、ビューを調べているユーザーがスーパーユーザーであるか、レポートされているプロセスを所有しているユーザーと同じである場合にのみ表示されます。
フィルタリングしてその情報を取得できませんか?これがデータベースの現在のユーザーになります。たとえば、開始実行時間を使用して、過去5分間のすべてのクエリを取得できます...
そんな感じ。
balexandreの情報の使用:
SELECT usesysid, usename FROM pg_stat_activity;
client_addr
クライアントのIPを取得するために、上記のクエリに追加できます。
OPは、特定のデータベースに接続しているユーザーを求めました。
-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity
WHERE datname = 'my_great_database';
これにより、次のようなあらゆる種類のジューシーな情報が得られます(他の人が言及しているように)
usesysid
)usename
)appname
)、その変数を設定するのpsql
が面倒な場合-します:-)client_addr
)query
)