Denn ich sehe dort eine Menge Prozesse, und die Spalte "Zeit" zeigt für alle große Werte an.
Antworten
Zu viele Anzeigen?Hier ist eine Lösung, die Sie ausführen können, ohne sich auf das Betriebssystem zu verlassen:
SCHRITT 1: Erstellen Sie eine gespeicherte Prozedur.
DROP PROCEDURE IF EXISTS kill_user_processes$$
CREATE PROCEDURE `kill_user_processes`(
IN user_to_kill VARCHAR(255)
)
READS SQL DATA
BEGIN
DECLARE name_val VARCHAR(255);
DECLARE no_more_rows BOOLEAN;
DECLARE loop_cntr INT DEFAULT 0;
DECLARE num_rows INT DEFAULT 0;
DECLARE friends_cur CURSOR FOR
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE USER=user_to_kill;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_rows = TRUE;
OPEN friends_cur;
SELECT FOUND_ROWS() INTO num_rows;
the_loop: LOOP
FETCH friends_cur
INTO name_val;
IF no_more_rows THEN
CLOSE friends_cur;
LEAVE the_loop;
END IF;
SET @s = name_val;
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT name_val;
SET loop_cntr = loop_cntr + 1;
END LOOP the_loop;
SELECT num_rows, loop_cntr;
END $$
DELIMITER ;
SCHRITT 2: Rufen Sie die gespeicherte Prozedur auf und geben Sie den Namen des Datenbankbenutzers an, dessen Prozesse Sie beenden möchten. Sie können die gespeicherte Prozedur umschreiben, um nach anderen Kriterien zu filtern, wenn Sie möchten.
ANRUFEN kill_user_processes('devdba');
Melden Sie sich bei Mysql als Administrator an:
mysql -uroot -ppassword;
Und dann den Befehl ausführen:
mysql> show processlist;
Sie erhalten dann eine Meldung wie die folgende:
+----+-------------+--------------------+----------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+--------------------+----------+---------+------+-------+------------------+
| 49 | application | 192.168.44.1:51718 | XXXXXXXX | Sleep | 183 | | NULL ||
| 55 | application | 192.168.44.1:51769 | XXXXXXXX | Sleep | 148 | | NULL |
| 56 | application | 192.168.44.1:51770 | XXXXXXXX | Sleep | 148 | | NULL |
| 57 | application | 192.168.44.1:51771 | XXXXXXXX | Sleep | 148 | | NULL |
| 58 | application | 192.168.44.1:51968 | XXXXXXXX | Sleep | 11 | | NULL |
| 59 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+-------------+--------------------+----------+---------+------+-------+------------------+
Sie erhalten vollständige Angaben zu den verschiedenen Verbindungen. Jetzt können Sie die schlafende Verbindung wie unten beschrieben beenden:
mysql> kill 52;
Query OK, 0 rows affected (0.00 sec)