Làm cách nào để bạn có thể kết nối những người dùng đang hoạt động với cơ sở dữ liệu postgreSQL thông qua SQL?


87

Làm cách nào để bạn có thể kết nối những người dùng đang hoạt động với cơ sở dữ liệu postgreSQL thông qua SQL? Đây có thể là userid's hoặc số lượng người dùng.

Câu trả lời:


114

(câu hỏi) Bạn không nhận được thông tin đó trong

chọn * từ pg_user ;

hoặc sử dụng chế độ xem pg_stat_activity :

select * from pg_stat_activity;

Thêm:

quan điểm cho biết:

Một hàng cho mỗi quy trình máy chủ, hiển thị OID cơ sở dữ liệu, tên cơ sở dữ liệu, ID quy trình, OID người dùng, tên người dùng , truy vấn hiện tại, trạng thái chờ của truy vấn, thời gian truy vấn hiện tại bắt đầu thực hiện, thời gian bắt đầu quá trình và địa chỉ của khách hàng và số cổng . Các cột báo cáo dữ liệu trên truy vấn hiện tại có sẵn trừ khi tham số stats_command_string đã bị tắt. Hơn nữa, các cột này chỉ hiển thị nếu người dùng kiểm tra chế độ xem là siêu người dùng hoặc giống như người dùng sở hữu quá trình được báo cáo.

bạn không thể lọc và lấy thông tin đó? đó sẽ là người dùng hiện tại trên Cơ sở dữ liệu, bạn có thể sử dụng thời gian bắt đầu thực thi để nhận tất cả các truy vấn từ 5 phút trước chẳng hạn ...

đại loại như vậy.


2
Không, đó là danh sách những người dùng đã biết, không phải số hiện đang được kết nối.
Keltia

làm thế nào về bộ sưu tập số liệu thống kê? (theo liên kết vào tên view)
balexandre

4
@ mm2010: pg_stat_activity: chỉ người dùng đang hoạt động. pg_user: liệt kê tất cả người dùng
Hao

4
Bị phản đối, câu trả lời hơi lung tung và cung cấp một số thông tin có thể đánh lừa người đọc trong tương lai, ví dụ: pg_user không hữu ích để tìm người dùng đang hoạt động được kết nối với cơ sở dữ liệu PostgreSQL.
Brad Koch

40

Sử dụng thông tin của balexandre:

SELECT usesysid, usename FROM pg_stat_activity;

2
Bạn có thể thêm client_addrvào truy vấn trên để lấy IP của khách hàng.
fagiani

7

OP yêu cầu những người dùng được kết nối với một cơ sở dữ liệu cụ thể :

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

Điều này cung cấp cho bạn tất cả các loại thông tin hấp dẫn (như những người khác đã đề cập) chẳng hạn như

  • userid (cột usesysid)
  • tên người dùng ( usename)
  • tên ứng dụng khách ( appname), nếu khó đặt biến đó - psqldoes :-)
  • Địa chỉ IP ( client_addr)
  • nó đang ở trạng thái nào (một vài cột liên quan đến trạng thái và trạng thái chờ)
  • và yêu thích của mọi người, lệnh SQL hiện tại đang được chạy ( query)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.