Mysql Kill User: come uccidere tutti i thread di un utente

Chi usa GUI come "Mysql Administrator" sicuramente ha apprezzato il bottone "kill user" ma improvisamente in "Mysql Workbench" la funzionalità è stata rimossa ed allora bisogna inventarsi qualcos'altro!

La cosa più comoda è sicuramente una procedura fatta ad HOC per non doverci ricordare quasi nulla!

  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `mysql`.`kill_user`$$
  4. CREATE PROCEDURE `mysql`.`kill_user` (kill_user_name VARCHAR(16) CHARSET utf8)
  5. DECLARE query_id INT;
  6. DECLARE iteration_complete INT DEFAULT 0;
  7. DECLARE query_cursore CURSOR FOR SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE user=kill_user_name;
  8. DECLARE CONTINUE HANDLER FOR NOT FOUND SET iteration_complete=1;
  9.  
  10. OPEN query_cursore;
  11. cursor_loop: LOOP
  12. FETCH query_cursore INTO query_id;
  13. IF iteration_complete THEN
  14. LEAVE cursor_loop;
  15. KILL query_id;
  16. END LOOP;
  17. CLOSE query_cursore;
  18.  
  19. END$$
  20.  
  21. DELIMITER ;

Disabilitare i vincoli di integrità (Foreign Key) su mysql

I vincoli di integrità referenziale (Foreign Key) sono certamente una bella cosa ma puo capitare nella vita di tutti i giorni che ci impediscano di effettuare operazioni di update o drop per noi importanti.
Di default questi vincoli vengono controllati ma è possibile temporaneamente disabilitarli con la seguente sintassi:

  1. SET FOREIGN_KEY_CHECKS = 0;
  2.  
  3. ....le query che
  4.  
  5. SET FOREIGN_KEY_CHECKS = 1;