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


88

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

답변:


115

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

선택 * from pg_user ;

또는 pg_stat_activity 보기 사용 :

select * from pg_stat_activity;

추가 :

보기는 말한다 :

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

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

그런 것.


2
아니요, 현재 연결된 번호가 아니라 알려진 사용자 목록입니다.
Keltia

통계 수집기는 어떻습니까? (보기 이름의 링크를 따르십시오)
balexandre

4
@ mm2010 : pg_stat_activity : 활성 사용자 만. pg_user : 모든 사용자 나열
Hao

4
비추천, 답변은 조금 방황하고 미래의 독자를 오도 할 수있는 정보를 제공합니다. 예를 들어 pg_user는 PostgreSQL 데이터베이스에 연결된 활성 사용자를 찾는 데 유용하지 않습니다.
브래드 코흐

40

balexandre의 정보 사용 :

SELECT usesysid, usename FROM pg_stat_activity;

2
client_addr클라이언트의 IP를 얻기 위해 위 쿼리에 추가 할 수 있습니다 .
fagiani

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.