Aktif kullanıcıların bir postgreSQL veritabanına SQL aracılığıyla bağlanmasını nasıl sağlayabilirsiniz?


88

Aktif kullanıcıların bir postgreSQL veritabanına SQL aracılığıyla bağlanmasını nasıl sağlayabilirsiniz? Bu, kullanıcı kimliği veya kullanıcı sayısı olabilir.

Yanıtlar:


115

(soru) Bu bilgiyi anlamıyor musun

pg_user'dan * seçin ;

veya pg_stat_activity görünümünü kullanarak :

select * from pg_stat_activity;

Katma:

görünüm diyor ki:

Sunucu işlemi başına bir satır, veritabanı OID'sini, veritabanı adını, işlem kimliğini, kullanıcı OID'sini, kullanıcı adını , geçerli sorguyu, sorgunun bekleme durumunu, geçerli sorgunun yürütülmeye başladığı zamanı, işlemin başlatıldığı zamanı ve müşterinin adresini ve bağlantı noktası numarası . Geçerli sorguya ilişkin verileri raporlayan sütunlar, stats_command_string parametresi kapatılmadıkça kullanılabilir. Ayrıca, bu sütunlar yalnızca görünümü inceleyen kullanıcı bir süper kullanıcıysa veya rapor edilen işlemin sahibi olan kullanıcıyla aynıysa görünür.

bu bilgiyi filtreleyip alamaz mısın? Bu, Veritabanındaki mevcut kullanıcılar olacaktır, örneğin son 5 dakikadaki tüm sorguları almak için başlatılan yürütme zamanını kullanabilirsiniz ...

bunun gibi bir şey.


2
Hayır, bu, şu anda bağlı olan numara değil, bilinen kullanıcıların listesidir.
Keltia

İstatistik toplayıcıya ne dersiniz? (görünüm adındaki bağlantıyı takip edin)
balexandre

4
@ mm2010: pg_stat_activity: yalnızca aktif kullanıcılar. pg_user: tüm kullanıcıları listele
Hao

4
Olumsuz oy verildiğinde, yanıt biraz gezinir ve gelecekteki okuyucuları yanıltabilecek bazı bilgiler sağlar, örneğin, pg_user bir PostgreSQL veritabanına bağlı aktif kullanıcıları bulmak için kullanışlı değildir.
Brad Koch

40

Balexandre'nin bilgilerini kullanma:

SELECT usesysid, usename FROM pg_stat_activity;

2
client_addrİstemcinin IP adresini almak için yukarıdaki sorguya ekleme yapabilirsiniz .
fagiani

7

OP, belirli bir veritabanına bağlı kullanıcıları sordu :

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

Bu size her türden ilginç bilgiyi (diğerlerinin de bahsettiği gibi) getirir.

  • kullanıcı kimliği (sütun usesysid)
  • kullanıcı adı ( usename)
  • istemci uygulama adı ( appname), bu değişkeni ayarlamak zorsa - psqlyapar :-)
  • IP adresi ( client_addr)
  • hangi durumda (durum ve bekleme durumuyla ilgili birkaç sütun)
  • ve herkesin favorisi, şu anki SQL komutu çalıştırılıyor ( query)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.