You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian 10系统下如何查看连接MySQL 3306端口的IP地址

解决Debian 10系统下查询MySQL 3306端口真实连接IP的方法

可用查询方法

  • 方法1:通过MySQL内置进程表查询(最准确,仅显示当前活跃/休眠连接)
    需拥有MySQL管理员权限,执行如下命令:
    mysql -uroot -p -e "SELECT SUBSTRING_INDEX(host, ':', 1) AS client_ip FROM information_schema.processlist;"
    输出结果中的client_ip字段即为连接MySQL的客户端IP,显示localhost为本地连接。
  • 方法2:使用tcpdump实时抓包(适合捕获短连接)
    针对测试脚本为短连接(连接后立刻断开,无法通过状态查询工具捕获)的场景,用root权限执行抓包命令:
    tcpdump -i any port 3306 -n
    运行命令的同时启动测试脚本,捕获结果中的源IP即为连接MySQL的客户端地址。
  • 方法3:使用ss命令查询TCP连接(替代netstat,效率更高)
    直接执行命令查看当前所有3306端口的已建立连接:
    ss -ntu state established '( dport = :3306 or sport = :3306 )'
    若需捕获瞬时短连接,可配合watch命令实时刷新:
    watch -n 0.5 ss -ntu state established '( dport = :3306 or sport = :3306 )'
  • 可选方法:开启MySQL通用查询日志(统计一段时间内所有连接IP)
    编辑MySQL配置文件(默认路径为/etc/mysql/mariadb.conf.d/50-server.cnf),添加如下配置:
    general_log = 1
    general_log_file = /var/log/mysql/mysql.log
    
    重启MySQL服务生效:systemctl restart mysql
    后续可通过如下命令筛选所有连接记录:
    grep "Connect" /var/log/mysql/mysql.log
    注意:使用完毕后需关闭通用日志,避免占用过多磁盘空间

原有工具查询无结果的原因

  1. nmap为端口扫描工具,仅能检测端口是否开放,无法查询已与服务器建立连接的客户端IP,本身不适用于该场景
  2. netstat仅能输出命令执行瞬间的TCP连接状态,若测试脚本使用短连接,会在两次命令执行间隙完成连接、查询、断开的流程,无法被捕获
  3. Debian 10默认预装的net-tools版本较老,部分场景下会出现连接信息遗漏的问题,推荐使用ss命令替代

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:15:01