PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL einen User killen



Steppengewächs
04.02.2008, 07:56
Hallo Leute,

ich hab eine frage bezüglich MySQL Prozesse killen, eigentlich möchte ich einen ganzen User killen.

Mit "kill thread_id" kann man ja die einzelnen Querys killen, aber wie sieht es aus wenn ich einen User in der Prozessliste habe mit sagen wir mal 100 Querys die hängen weil eine Tabelle kaputt ist, wie kann ich alle Prozesse des Users killen?

Es gibt da ja so irgend was, sowas in der Art wie:
kill all from mysql.user where user = 'seite';

Hat jemand eine Idee, und kennt ein derartiges MySQL Statement?

Vielen dank im voraus!

Huschi2
05.02.2008, 11:18
Wenn eine Tabelle kaputt ist, muß sie Repariert werden. (z.B. mit myisamchk)
Dafür sollte man eh den MySQL-Daemon abschalten.
Und wie durch einen Zufall verliert er dabei auch alle Connections. :)

huschi.

bitmuncher
05.02.2008, 21:00
Auch ein 'repair table' killt normalerweise die Verbindungen auf die Tabelle. Ein userspezifisches Killen von Queries ist aber meines Wissens nach nicht möglich. 'kill' kann ja nur einzelne Verbindungen oder Queries abschiessen.

Steppengewächs
06.02.2008, 07:51
Super danke für die Antworten, ich hab das zuerst mit killall (Shell) verwechselt. :)

Ich werde das ganze hoffentlich demnächst mal ausprobieren können.

bitmuncher
06.02.2008, 23:29
Theoretisch sollte sich das ganze problemlos über ein Skript machen lassen. Einfach den Output von 'show processlist' parsen und dort die IDs rausholen, die auf die entsprechende Tabelle zugreifen und dann ein 'kill' auf die gefundenen IDs absetzen.

Steppengewächs
07.02.2008, 15:36
Gute Idee, ich setze das demnächst um sowie ich wieder mehr Zeit habe.

thx

cplinux
17.02.2008, 19:21
Damit kann man Abfragen einer DB löschen:



db="database_name"
table="table_name"
host="host_name"
mysql -hdb9 -e "SHOW PROCESSLIST " | grep "$db.$table" | awk '{print
$1}' | while read i; do echo $i; mysql -h$host -e "KILL $i"; done


Evtl. hilft das weiter. Das sollte sich evtl. auf User ausweiten lassen.
:)