[sql] SQL을 통해 활성 사용자를 postgreSQL 데이터베이스에 연결하려면 어떻게해야합니까?

SQL을 통해 활성 사용자를 postgreSQL 데이터베이스에 연결하려면 어떻게해야합니까? 사용자 ID 또는 사용자 수일 수 있습니다.



답변

(질문) 당신은 그 정보를 얻지 않습니까?

선택 * from pg_user ;

또는 pg_stat_activity 보기 사용 :

select * from pg_stat_activity;

추가 :

보기는 말한다 :

데이터베이스 OID, 데이터베이스 이름, 프로세스 ID, 사용자 OID, 사용자 이름 , 현재 쿼리, 쿼리 대기 상태, 현재 쿼리 실행이 시작된 시간, 프로세스가 시작된 시간, 클라이언트 주소 및 포트 번호 . 현재 쿼리에 대한 데이터를보고하는 열은 stats_command_string 매개 변수가 꺼져 있지 않으면 사용할 수 있습니다. 또한 이러한 열은보기를 검사하는 사용자가 수퍼 유저이거나보고되는 프로세스를 소유 한 사용자와 동일한 경우에만 표시됩니다.

필터링해서 그 정보를 얻을 수 없습니까? 데이터베이스의 현재 사용자가 될 것입니다. 예를 들어, 시작된 실행 시간을 사용하여 지난 5 분의 모든 쿼리를 가져올 수 있습니다.

그런 것.


답변

balexandre의 정보 사용 :

SELECT usesysid, usename FROM pg_stat_activity;


답변

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).


답변