Come si possono collegare gli utenti attivi a un database postgreSQL tramite SQL? Questo potrebbe essere l'ID utente o il numero di utenti.
Come si possono collegare gli utenti attivi a un database postgreSQL tramite SQL? Questo potrebbe essere l'ID utente o il numero di utenti.
Risposte:
(domanda) Non inserire queste informazioni
seleziona * da pg_user ;
o utilizzando la visualizzazione pg_stat_activity :
select * from pg_stat_activity;
Aggiunto:
la vista dice:
Una riga per processo server, che mostra l'OID del database, il nome del database, l'ID del processo, l'OID utente, il nome utente , la query corrente, lo stato di attesa della query, l'ora in cui è iniziata l'esecuzione della query corrente, l'ora in cui è stato avviato il processo e l'indirizzo del client e numero di porta . Le colonne che riportano i dati sulla query corrente sono disponibili a meno che il parametro stats_command_string non sia stato disattivato. Inoltre, queste colonne sono visibili solo se l'utente che esamina la vista è un superutente o lo stesso dell'utente proprietario del processo su cui si sta segnalando.
non puoi filtrare e ottenere queste informazioni? che saranno gli utenti correnti sul database, è possibile utilizzare il tempo di esecuzione iniziale per ottenere tutte le query degli ultimi 5 minuti, ad esempio ...
qualcosa del genere.
Utilizzando le informazioni di balexandre:
SELECT usesysid, usename FROM pg_stat_activity;
client_addr
alla query precedente per ottenere l'IP del client.
OP ha chiesto utenti collegati a un determinato database :
-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity
WHERE datname = 'my_great_database';
Questo ti dà tutti i tipi di informazioni succose (come altri hanno già detto) come
usesysid
)usename
)appname
), se si preoccupa di impostare quella variabile - psql
fa :-)client_addr
)query
)