Bagaimana Anda bisa membuat pengguna aktif terhubung ke database postgreSQL melalui SQL?

88

Bagaimana Anda bisa membuat pengguna aktif terhubung ke database postgreSQL melalui SQL? Ini bisa menjadi userid atau jumlah pengguna.

Johan Bresler
sumber

Jawaban:

115

(pertanyaan) Apakah Anda tidak mendapatkan info itu

pilih * dari pg_user ;

atau menggunakan tampilan pg_stat_activity :

select * from pg_stat_activity;

Ditambahkan:

pemandangan mengatakan:

Satu baris per proses server, menunjukkan database OID, nama database, ID proses, OID pengguna, nama pengguna , kueri saat ini, status tunggu kueri, waktu di mana kueri saat ini mulai dieksekusi, waktu di mana proses dimulai, dan alamat klien dan nomor port . Kolom yang melaporkan data pada kueri saat ini tersedia kecuali parameter stats_command_string telah dimatikan. Lebih lanjut, kolom ini hanya terlihat jika pengguna yang memeriksa tampilan adalah pengguna super atau sama dengan pengguna yang memiliki proses yang dilaporkan.

tidak bisakah Anda memfilter dan mendapatkan informasi itu? yang akan menjadi pengguna saat ini di Database, Anda dapat menggunakan waktu eksekusi mulai untuk mendapatkan semua kueri dari 5 menit terakhir misalnya ...

sesuatu seperti itu.

balexandre
sumber
2
Tidak, itu adalah daftar pengguna yang diketahui, bukan nomor yang saat ini terhubung.
Keltia
bagaimana dengan kolektor Stats? (ikuti link di nama tampilan)
balexandre
4
@ mm2010: pg_stat_activity: hanya pengguna aktif. pg_user: daftar semua pengguna
Hao
4
Diturunkan, jawaban sedikit mengembara dan memberikan beberapa informasi yang mungkin menyesatkan pembaca di masa mendatang, misalnya, pg_user tidak berguna untuk menemukan pengguna aktif yang terhubung ke database PostgreSQL.
Brad Koch
40

Menggunakan info balexandre:

SELECT usesysid, usename FROM pg_stat_activity;
Sven Lilienthal
sumber
2
Anda dapat menambahkan client_addrkueri di atas untuk mendapatkan IP klien.
fagiani
7

OP meminta pengguna yang terhubung ke database tertentu :

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

Ini memberi Anda semua jenis info menarik (seperti yang telah disebutkan orang lain) seperti

  • userid (kolom usesysid)
  • nama pengguna ( usename)
  • nama aplikasi klien ( appname), jika ada masalah untuk menyetel variabel itu - psqlapakah :-)
  • Alamat IP ( client_addr)
  • status apa itu (beberapa kolom yang terkait dengan status dan status tunggu)
  • dan favorit semua orang, perintah SQL saat ini dijalankan ( query)
Tom Hundt
sumber