Client(s) von einer IP im laufenden Betrieben "kicken"?

Hey. Und zwar will ich bei mir ne Funktion einbauen, wenn ein User gewisse Kriterien nicht erfüllt diesen (mit allen Verbindungen) vom Server zu kicken und zu sperren.

D.h. Wenn eine Anfrage mit “Select * from table” ausgeführt wird, dass dieser unterbrochen wird.

Gibt es hierfür möglichkeiten?

pg_cancel_backend(pid), die PID kannst Du aus der Spalte procpid vom View pg_stat_activity erfragen, via TRIGGER auf table. Man kann sich auch sicherlich noch deutlich komplizierter durch die Brust ins Auge ballern oder auch auch gleich dem User den Zugriff auf table via den üblichen Zugriffsregeln versperren.

Andreas

okay. vorweg danke für die Infos. Derzeit regel ich eine “sperre” über iptables. - ist aber irgendwie eine unschöne Lösung für mein Problem. Werd mal ein paar Tests machen.

Mal wieder besten Dank akretschmer.

Schönen Gruß

okay irgendwie klappt das nicht.

select pg_cancel_backend(12588);

pg_stat_activity. zeigt stets den prozess noch an

EDIT:
Okay prozess bleibt natürlich stehen, da nur dieser “gecancelt” wird und nicht terminiert wird. Querys werden auch perfekt abgebrochen, genau das was ich möchte. Danke.