如果你想看看mysql被多少远程主机连接上了,请输入这个命令

1、一般我们查看网络连接是这样的

[root@xxxxxx  ~]# netstat -ant

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN

tcp        0      0 127.0.0.1:199               0.0.0.0:*                   LISTEN

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

tcp        0      0 10.47.93.188:3306           10.47.93.180:57161          ESTABLISHED

tcp        0      0 10.47.93.188:3306           10.47.93.180:57203          ESTABLISHED

tcp        0      0 10.47.93.188:3306           10.47.93.180:57190          ESTABLISHED

tcp        0      0 10.47.93.188:3306           10.47.93.180:57223          ESTABLISHED

......

稍解释一下,a:显示所有选项,t:仅显示tcp协议的项,n:用ip地址代替主机名。-ant组合让系统显示所有tcp协议的网络连接,并且显示主机IP地址。

2、如果我想知道有多少个远程主机连接到本机的mysql,可以这样做

[root@xxxxxx  ~]# netstat -ant |grep :3306 |wc -l

241

稍解释一下,因为mysql侦听3306端口,所以在之前的结果集中grep出3306的项目,再通过wc -l算出纪录条数即可。

3、更进一步我想知道每个远程主机分别与本机建立了多少链接,可以这样做

netstat -ant |grep "10.47.93.188:3306" |awk '{print $5}' |awk -F: '{print $1}' |sort|uniq -c |sort -nr

    110 10.47.93.180

    109 10.47.93.197

      20 10.47.93.199

        1 10.47.93.205

稍解释一下,grep的作用是从前面结果集中筛选出只连接本机的纪录,第一个awk的作用是只列出远程主机的IP,二个awk的作用是去掉:后面的端口号,然后用sort排序将相同ip的纪录排到一块,再用uniq -c统计个数,最后排序展现出来。

4、补充一点东西,如果连接主机太多了不方便查询,可以在上面命令后加入|head -20,只显示前20条统计结果了。另外只想统计以建立连接的项目(还有一部分WAIT状态的不想统计进来)可以在第一个grep后面再加|grep ESTABL。


你可能感兴趣的:(如果你想看看mysql被多少远程主机连接上了,请输入这个命令)