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.
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:
(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.
Sử dụng thông tin của balexandre:
SELECT usesysid, usename FROM pg_stat_activity;
client_addr
vào truy vấn trên để lấy IP của khách hàng.
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ư
usesysid
)usename
)appname
), nếu khó đặt biến đó - psql
does :-)client_addr
)query
)