Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to kill MySQL connections

I'm building a website with MySQL. I'm using TOAD for MySQL and suddenly I can't connect to the database as I'm getting an error:

"Too many connections"

Is there any way in Toad for MySQL to view existing connections to be able to kill them or simple close all connections all together?

like image 778
leora Avatar asked Feb 08 '11 11:02

leora


People also ask

How do I kill a database connection in MySQL?

Use SHOW PROCESSLIST to view all connections, and KILL the process ID's you want to kill. You could edit the timeout setting to have the MySQL daemon kill the inactive processes itself, or raise the connection count.

How do I end a MySQL thread?

Once you've identified the problem thread, you can use the KILL command to kill it. There are basic two variations on the KILL command. # Kill the entire connection. KILL thread_id; KILL CONNECTION thread_id; # Terminate the currently executing statement, but leave the connection intact.

How do I close a connection in MySQL Workbench?

To quit MySQL Workbench select options File->Exit in a manu at the topmost line of MySQL Workbench window.

What is MySQL kill query?

KILL QUERY terminates the statement the connection is currently executing, but leaves the connection itself intact.


2 Answers

No, there is no built-in MySQL command for that. There are various tools and scripts that support it, you can kill some connections manually or restart the server (but that will be slower).

Use SHOW PROCESSLIST to view all connections, and KILL the process ID's you want to kill.

You could edit the timeout setting to have the MySQL daemon kill the inactive processes itself, or raise the connection count. You can even limit the amount of connections per username, so that if the process keeps misbehaving, the only affected process is the process itself and no other clients on your database get locked out.

If you can't connect yourself anymore to the server, you should know that MySQL always reserves 1 extra connection for a user with the SUPER privilege. Unless your offending process is for some reason using a username with that privilege...

Then after you can access your database again, you should fix the process (website) that's spawning that many connections.

like image 192
Konerak Avatar answered Sep 21 '22 19:09

Konerak


mysql> SHOW PROCESSLIST; +-----+------+-----------------+------+---------+------+-------+---------------+ | Id  | User | Host            | db   | Command | Time | State | Info      | +-----+------+-----------------+------+---------+------+-------+----------------+ | 143 | root | localhost:61179 | cds  | Query   |    0 | init  | SHOW PROCESSLIST | | 192 | root | localhost:53793 | cds  | Sleep   |    4 |       | NULL      | +-----+------+-----------------+------+---------+------+-------+----------------+ 2 rows in set (0.00 sec)  mysql> KILL 192; Query OK, 0 rows affected (0.00 sec) 

USER 192 :

mysql> SELECT * FROM exept; +----+ | id | +----+ |  1 | +----+ 1 row in set (0.00 sec)  mysql> SELECT * FROM exept; ERROR 2013 (HY000): Lost connection to MySQL server during query 
like image 26
zloctb Avatar answered Sep 17 '22 19:09

zloctb