MySQL8.0 如何获取将提交sql的用户IP
不同的用户使用相同的数据库账号登录有不同的IP,一般都是存到日志中,查询起来比较麻烦。
找了下似乎没有人做类似的demo,于是自己琢磨了下发现可行。
核心思路还是通过processlist去找:
select SUBSTRING_INDEX(host, ':', 1) ip_address,
-- 获取IP地址
pl.id, -- 进程序号
pl.HOST , -- IP+接口
pl.COMMAND, -- 命令类型
pl.USER, -- 使用用户
pl.DB, -- 使用数据库
pl.INFO -- SQL详情
from information_schema.processlist pl
where pl.info is not null;
个人感觉这条SQL比较有意思,其实也还是提交SQL会先拿到资源然后在processlist表里面生成该记录,再由数据库去解析执行该SQL。所以这里看起来像是先有鸡先有蛋的问题,其实不然。