Ich brauche eine effiziente Möglichkeit, alle Clients mit einem bestimmten Benutzernamen von MySQL zu trennen. Ich habe darüber nachgedacht, das Benutzerkennwort zu ändern, aber ich denke, dass dies nur überprüft wird, wenn die Verbindung hergestellt wird.
Sie können die unten stehende Methode "SQL to SQL" verwenden (übergeben Sie bei Bedarf einfach zusätzliche Verbindungsoptionen an den MySQL-Client):
shell> mysql -NBe "SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE user = 'some_username';"| mysql -vv
Hinweis: Dies funktioniert mit MySQL 5.1 und 5.5. Dies müsste für ältere MySQL-Versionen anders implementiert werden, da information_schema nicht über die Prozesslistentabelle verfügt.
Verwendete Optionen:
-N means that you do not want to get column names back.-B puts it into batch mode, so that you do not get MySQL's table layout.-e executes the following statement.-v controls the verbosity, could be used up to three times.
Erklärung, wie es funktioniert:
Zuerst werden die KILL-Anweisungen zusammen mit IDs generiert.
shell> mysql -NBe "SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE user = 'some_username';"
Beispielausgabe:
KILL1061;KILL1059;KILL1057;
Dann werden diese Anweisungen ausgeführt.
shell> mysql -NBe "SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE user = 'some_username';"| mysql -vv
Mein Ansatz ist sehr einfach. Im ersten Schritt senden wir 'show processlist' an unsere Datenbank. Das Ergebnis ist eine Liste mit allen verbundenen Benutzern. Im nächsten Schritt verwenden wir den guten alten Befehl grep, um die Benutzernamen zu filtern. Mit awk generieren wir den 'kill Befehl'. Im letzten Schritt senden wir alle Kill-Befehle an MySQL. Alles muss mit dem | verkettet werden Symbol.
mysql -uroot -e 'show processlist'| grep username | awk {'print "kill "$1";"'}| mysql -uroot
Unter Linux können Sie so etwas verwenden.
Mein Ansatz ist sehr einfach. Im ersten Schritt senden wir 'show processlist' an unsere Datenbank. Das Ergebnis ist eine Liste mit allen verbundenen Benutzern. Im nächsten Schritt verwenden wir den guten alten Befehl grep, um die Benutzernamen zu filtern. Mit awk generieren wir den 'kill Befehl'. Im letzten Schritt senden wir alle Kill-Befehle an MySQL. Alles muss mit dem | verkettet werden Symbol.
quelle