一个大规模如何可能杀死连接到MySQL?

我已经打开了太多的连接到MySQL,现在我无法访问它。 它说“太多的连接”。 我怎样才能closures所有这些连接? 我也不知道如何重新启动它,这可能会解决问题。

我在2011年5月回答了关于在DBA StackExchange中大规模杀死数据库连接的这个问题。

什么可以允许一个人在这样的压力条件下login到MySQL? 答案很简单:不要给每个人超级特权!

为什么SUPER Privilege?

根据MySQL文档

SUPER权限允许一个帐户使用CHANGE MASTER TO,KILL或者mysqladmin kill来杀死属于其他帐户的线程(你总是可以杀死你自己的线程),PURGE BINARY LOGS,使用SET GLOBAL修改全局系统variables的configuration更改,mysqladmin debug命令,启用或禁用日志logging,即使启用了read_only系统variables也执行更新,在从属服务器上启动和停止复制,在stored procedures和视图的DEFINER属性中指定任何帐户,并且可以连接(一次)甚至如果达到由max_connections系统variables控制的连接限制。

鉴于此,常规客户端连接不应具有SUPER特权。 一旦DB连接的数量达到= max_connections ,只允许多一个连接,并且一个连接必须具有SUPER特权。 如果每个人和他的祖母都有超级特权,所有的投注都closures,任何人都无法login。

您有以下三个选项:

  1. 开始 – >运行 – > Services.msc
    findMySQL,右键单击并select重新启动

  2. 开始 – >运行 – > CMD
    净停止MySQL input
    网启动MySQL 进入

  3. 杀死任务面板中的mySQLd.exe的所有实例。 (不build议)

如果您有权访问您的服务器,请重新启动mysql。 如果你没有访问你的服务器,只需等待。

如果某些Web应用程序无法连接到数据库,它将始终报告“连接太多”。 如果你在MySQL重启之后得到这个错误,那么真正的错误可能是“没有连接”。 尝试连接到MySQL一些其他方式,命令行,phpmydmin或另一个MySQL驱动的网站在同一台服务器上。

如果您可以通过其他方式连接到MySQL,请检查网站中的连接string(为MySQL提供用户名和密码的位),然后连接这些凭据,可能已经更改了某些内容,但未在脚本中进行更新。

如果你根本不能连接到MySQL,并重新启动MySQL没有解决它,那么你将需要看看你的事件日志(你说这是在Windows服务器的评论)。 重新启动服务器是一个快捷方式,将排除许多问题,也检查你没有磁盘空间不足。

我解决了它! 这是C#代码中的一个错误,我不小心打开了“connection.Open()”。 -.-

Class1说'嗨Class2,打开连接! 和Class2回答“连接打开! 现在打开一个连接,Class1!“。 然后,Class1打开了一个连接,并对Class2说'也打开了一个连接! 和soooo …

我为这个愚蠢感到抱歉,我只是没有意识到这一点。

(Y)3天

干杯!

你应该可以用root用户进入mysql。
从那里你可以运行一个“显示进程列表”。 然后你可以运行kill'Id'来终止连接。