暂无图片
MySQL8.0如何查询 异常断开的 客户端 是哪个IP, 哪个数据库用户名
我来答
分享
XY
2024-06-18
MySQL8.0如何查询 异常断开的 客户端 是哪个IP, 哪个数据库用户名

客户有一个需求:

MySQL 的 database对象 发生改变,相应的客户端连接数据库肯定会报 Unknown database xxx。现在需要统计这些连接异常的客户端IP是多少,有没有很好的办法


我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
伟鹏

可以做一个mysql的审计,大致过程就是专门创建一个数据库,里面创建一张表来存储数据库的访问信息,可以在mysql的my.cnf里面配置init-connect ,当有用户访问数据库的时候就会写入到那个表里面。通过表就可以查看访问信息。

暂无图片 评论
暂无图片 有用 0
暂无图片
Samson

小版本是啥

暂无图片 评论
暂无图片 有用 0
XY
题主
2024-06-18
8.0.25
XY
题主
2024-06-18
有方法吗
Samson
答主
2024-06-19
select ip,host from performance_schema.host_cache 看下
watson


MySQL8.0如何查询 异常断开的 客户端 是哪个IP, 哪个数据库用户名

在MySQL 8.0中,可以通过查询performance_schema库中的session表来找出异常断开的客户端信息。以下是一个示例查询,它会返回最近断开的客户端的IP地址和使用的数据库用户名:

SELECT
THREAD_ID,
HOST AS Client_IP,
USER AS Database_User,
TIMESTAMPDIFF(SECOND, END_TIME, CURRENT_TIMESTAMP) AS Time_Since_Disconnect
FROM
performance_schema.threads
WHERE
TYPE = 'CONNECTION'
AND STATE = 'DISCONNECTED'
ORDER BY
END_TIME DESC
LIMIT 1;

这个查询会返回最近断开连接的客户端的线程ID、IP地址、数据库用户名以及从断开连接到现在的时间(秒数)。通过ORDER BY END_TIME DESC可以确保最新的断开会话排在最前面,通过LIMIT 1限制结果只显示最近的一个会话。

请确保开启了performance_schema以及合适的监控设置,因为如果不是最新的断开会话,你可能需要调整查询条件或查看其他相关表来获取所需信息。

暂无图片 评论
暂无图片 有用 0
XY
题主
2024-06-19
这条SQL中的字段在 MySQL8.0 performance_schema.threads 表中根本没有,
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏