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

如何查看曾连接MySQL数据库的历史IP地址?

如何找出与MySQL数据库交互过的IP地址

嘿,这个问题我刚好帮不少同学搞定过!要提取和你的MySQL数据库交互过的IP,MySQL本身就有现成的工具和系统表可用,分几种场景给你拆解:

一、查看当前活跃的连接IP

如果只是想知道现在正在连接的客户端IP,用SHOW PROCESSLIST就能直接看:

SHOW PROCESSLIST;

返回结果里的Host字段会显示「IP地址:端口号」的格式(比如192.168.3.10:45678),冒号前面的就是客户端IP。

要是想直接提取去重后的IP,用INFORMATION_SCHEMA.PROCESSLIST表配合字符串函数更高效:

SELECT DISTINCT SUBSTRING_INDEX(Host, ':', 1) AS client_ip
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE User != 'system user'; -- 排除MySQL内部的系统连接

二、获取所有历史连接过的IP

如果需要的是**曾经连接过(不管现在是否活跃)**的IP,推荐用performance_schema下的host_cache表——这个表是MySQL用来缓存客户端主机信息的,会记录所有成功/失败的连接尝试:

SELECT DISTINCT IP
FROM performance_schema.host_cache;

注意:

如果执行这条命令提示表不存在,大概率是你的MySQL没开启performance_schema。需要修改配置文件(my.cnf或my.ini),添加一行:

performance_schema = ON

保存后重启MySQL服务,之后host_cache就会自动记录所有连接过的IP了。

三、获取带时间戳的详细历史连接记录

要是还需要知道每个IP什么时候连接过,可以开启MySQL的通用查询日志。不过通用日志会记录所有执行的SQL语句,文件体积会增长很快,用完记得关掉哦!

开启通用日志的命令:

SET GLOBAL general_log = ON;
SET GLOBAL general_log_file = '/var/log/mysql/general.log'; -- 换成你想存日志的路径

日志文件里会有类似这样的记录:

Connect test_user@192.168.3.10 on test_db

在Linux下可以用命令快速提取去重的IP:

grep 'Connect' /var/log/mysql/general.log | awk '{print $3}' | cut -d'@' -f2 | cut -d' ' -f1 | sort -u

Windows环境可以用PowerShell或者文本编辑器的搜索功能来提取IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:50:22