我正在和MySQL一起建一个网站。我正在使用TOAD for MySQL,突然我无法连接到数据库,因为我收到了一个错误:
"Too many“
在Toad for MySQL中,有没有什么方法可以查看现有的连接,从而能够终止它们或简单地将所有连接一起关闭?
发布于 2011-02-08 20:29:34
没有,没有内置的MySQL命令。有各种各样的工具和脚本支持它,你可以手动终止一些连接或重新启动服务器(但这样会更慢)。
使用SHOW PROCESSLIST
查看所有连接,然后使用KILL
命令删除要终止的进程ID。
您可以编辑超时设置,让MySQL守护进程自行终止非活动进程,或者增加连接计数。您甚至可以对每个用户名的连接数量进行限制,这样,如果进程继续行为不佳,唯一受影响的进程就是该进程本身,并且数据库上的其他客户端也不会被锁定。
如果您不能再连接到服务器,您应该知道MySQL总是为具有SUPER
privilege的用户保留一个额外的连接。除非您的违规进程出于某种原因使用了具有该权限的用户名...
然后,在你可以再次访问你的数据库之后,你应该修复产生那么多连接的进程(网站)。
发布于 2015-06-19 15:36:36
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)
用户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
发布于 2019-10-26 19:43:59
虽然你不能用一条命令杀死所有打开的连接,但如果有太多的手工操作,你可以创建一组查询来帮你做这件事。
此示例将为所有从192.168.1.1
到my_db
的some_user
连接创建一系列KILL <pid>;
查询。
SELECT
CONCAT('KILL ', id, ';')
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE `User` = 'some_user'
AND `Host` = '192.168.1.1'
AND `db` = 'my_db';
https://stackoverflow.com/questions/4932503
复制相似问题