MySQL如何杀掉无用连接?

MySQL如何杀掉无用连接?,第1张

错误“Too many connections”。平常碰到这个问题,我基本上是修改/etc/my.cnf的max_connections参数,然后重启数据库。但是生产服务器上数据库又不能随便重启。没办法,只好想办法手动去释放一些没用的连接。登陆到MySQL的提示符下,数据show processlist这个命令,可以得到所以连接到这个服务器上的MySQL连接:mysql>show processlist+---------+------+---------------------+---------+---------+------+-------+-------------------+| Id | User | Host| db | Command | Time | State | Info |+---------+------+---------------------+---------+---------+------+-------+-------------------+| 1180421 | ur | 202.103.96.68:49754 | test1 | Sleep |1 | | NULL || 1180427 | ur | 202.103.96.68:55079 | test2 | Sleep |1 | | NULL || 1180429 | ur | 202.103.96.68:55187 | testdba | Sleep |0 | | NULL || 1180431 | ur | 202.103.96.68:55704 | testdba | Sleep |0 | | NULL || 1180437 | ur | 202.103.96.68:32825 | test1 | Sleep |1 | | NULL || 1180469 | ur | 202.103.96.68:58073 | testdba | Sleep |0 | | NULL || 1180472 | ur | 83.136.93.131:47613 | test2 | Sleep |8 | | NULL || 1180475 | root | localhost | NULL| Query |0 | NULL | show PROCESSLIST |+---------+------+---------------------+---------+---------+------+-------+-------------------+8 rows in set (0.00 sec)mysql>然后,你可以看到像上面这样的MySQL数据连接列表,而且每一个都会有一个进程ID号(在上表的第一列)。我们只要输入这样的命令:mysql>kill 1180421Query OK, 0 rows affected (0.00 sec)mysql>其中1180421为你在进程列表里找到并且要杀掉的进程号。产生这种问题的原因是:连接数超过了 MySQL 设置的值,与 max_connections 和 wait_timeout 都有关系。wait_timeout 的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大。解决方法:修改MySQL配置文件/etc/my.cnf,设置成max_connections=1000,wait_timeout=5。如果没有此项设置可以自行添加,修改后重启MySQL服务即可。要不经常性报此错误,则要对服务器作整体性能优化注:为了防止发生too many connections时候无法登录的问题,mysql manual有如下的说明:mysqld actually allows max_connections+1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege. By granting the SUPER privilege to administrators and not to normal users (who should not need it), an administrator can connect to the server and use SHOW PROCESSLIST to diagnose problems even if the maximum number of unprivileged clients are connected.因此, 必须只赋予root用户的SUPER权限,同时所有数据库连接的帐户不能赋予SUPER权限。前面说到的报错后无法登录就是由于我们的应用程序直接配置的root用户 总结,解决问题的最终方法:1.修改配置文件/etc/my.cnf,调整连接参数2.检查程序代码,对于没有关闭的链接及时进行关闭

下载安装软件

使用navicate for mysl 之前当然先下载该软件,可以通过百度搜索查找 navicate 特别注意一下,请认准百度安全验证最好到官方网站,或者正规软件下载站下载

2

下载好软件之后,进行安装navicat for mysql(安装过程之间注意一下插件的自定义选择)

Navicat for mysql 怎么用?

连接数据库

打开navicat for mysql之后找到,文件----新建连接-- 如下图

连接参数填写

在出现的连接设置里面,有很多选项都是针对需要连接的数据库的账号信息

连接名:可以任意填写,方便以后识别区分即可

主机名或IP: 填写服务器的主机名(必须要能解析的)或者服务器IP地址,如果是本机可 以填写localhost 或 127.0.0.1

端口:默认是3306 如果修改了其他端口,需要对应

密码:就是用户名root密码或者其他mysql用户的密码

设置好连接数据库的参数之后,点击下方的“连接”如图出现“连接成功”即设置成功

数据库管理

连接上数据库之后,在左侧会显示当前mysql所有的数据库。点击对应的数据库,能查看当前数据库下面的表

添加删除数据库

如果需要添加删除数据库的话,很简单选择需要 *** 作的数据库,鼠标右键选择 *** 作即可

添加删除表

同样对于数据库下方的表,如果要新建的话点击选择 表---新建

对于新建的表,名和类型都可以手动输入指定选择。设置好之后,点击保存输入表名即可完成 *** 作

点击添加好的表,或数据库的表。双击之后右侧会列出当前表的详细列项目和属性

如何使用命令行

虽然是图形化管理工具,但是对于很多 *** 作其实还是需要SQL命令会更加方便。进入sql命令行界面,点击“工具”--“命令列界面”如下图箭头位置

随后在右下方空白区域进入了SQL命令行界面, *** 作方法和普通进入mysql命令行界面一样使用命令。如果需要清除当前屏幕内容,可以点击“清除”即可

其他功能

对于之前数据库已经导出的sql文件,或者写好的sql命令语句。可以通过选择需要导入的数据库,或表 右键选项“运行sql文件”


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5909153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存