讲师中心 微信公众号

工具推荐

视频效率加速
Seko
Seko

AI短剧一键生成成片

剧云
剧云

中文短剧剧本制作平台

立刻MV
立刻MV

低成本歌曲 MV、视频生成

updream

一键生成高质量推广成片

怎样通过MySQL通用日志排查恶意攻击与注入行为

浅明小哥_9448

浅明小哥_9448

发布时间:2026-11-12 07:31:05

|

505人浏览过

|

来源于php中文网

原创

general_log默认关闭,启用需在my.cnf中配置general_log=ON、general_log_file和log_output=FILE,并确保路径权限正确;动态开启仅对新连接生效,且性能影响大。

怎样通过mysql通用日志排查恶意攻击与注入行为

general_log 默认不记录任何内容,直接查 mysql.general_log 表或翻日志文件,大概率是空的——必须先确认它真开着,再谈分析。

先确认 general_log 是否真正启用

很多排查卡在这一步:以为开了,其实没生效。SHOW VARIABLES LIKE 'general_log%' 返回 ON 只是表象,还要看 log_output 值是不是 'TABLE' 或有效路径。常见错误包括:

  • log_output = 'NONE':变量显示 general_log = ON,但日志根本没写到任何地方
  • general_log_file 指向不可写路径(如权限为 mysql:mysql 但目录属主是 root),MySQL 错误日志里会报 Failed to open log file
  • 已存在连接不受影响:SET GLOBAL general_log = ON 只对新建立的连接生效,老连接不会突然开始记日志

从 mysql.general_log 表里快速筛出可疑连接和语句

该表默认用 CSV 引擎,无索引,SELECT * 全表扫极慢。别硬查,优先用条件过滤:

  • 查异常登录:SELECT * FROM mysql.general_log WHERE argument LIKE '%Access denied%' OR command_type = 'Connect' ORDER BY event_time DESC LIMIT 50
  • 找高危操作:SELECT * FROM mysql.general_log WHERE argument REGEXP '(UNION\s+ALL\s+SELECT|information_schema|LOAD_FILE\(|SLEEP\(|EXECUTE IMMEDIATE)' LIMIT 100
  • 盯参数异常:SELECT * FROM mysql.general_log WHERE argument LIKE "SELECT%WHERE%id = %OR%" AND argument NOT LIKE "%?%"(提示拼接而非预编译)

注意:argument 字段里若出现未闭合单引号、嵌套引号、%27/%3B 等 URL 编码,比单纯搜 union 更可靠。

win可用的mysql指令skill
win可用的mysql指令skill

安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。

下载

文件日志下用 grep/awk 直击要害,别人工翻

日志文件动辄几 GB,cat 或 less 翻等于放弃。Linux 下高效命令组合:

  • 快速定位注入痕迹:grep -iE "(union|information_schema|load_file|sleep()|;.*;" /var/lib/mysql/general.log | head -30
  • 统计同一 IP 的高频相似查询:awk '$3 == "Query" {print $5}' /var/lib/mysql/general.log | grep -E "WHERE id =" | cut -d'=' -f2 | sort | uniq -c | sort -nr | head -10
  • 检查是否含明文密码:grep -i "password.*=" /var/lib/mysql/general.log(暴露风险远高于注入本身)

权限常被忽略:mysqld 以 mysql 用户身份写日志,普通用户 cat 报 Permission denied,得 sudo 或让 DBA 导出片段。

关掉 general_log 不代表风险结束

临时关闭(SET GLOBAL general_log = OFF)只停写入,已有日志仍躺在磁盘上——里面可能含明文密码、身份证、token。必须手动清理:

  • 先执行 SHOW VARIABLES LIKE 'general_log_file' 确认路径
  • 检查权限:ls -l $(mysql -Nse "SHOW VARIABLES LIKE 'general_log_file'" | awk '{print $2}')
  • 删前备份:gzip /var/lib/mysql/general.log && rm /var/lib/mysql/general.log

真正容易被忽略的是:攻击者可能早就在你开启 general_log 前完成了提权或导库,日志只是结果,不是起点。查日志时,永远要同步核对账号、权限、网络监听配置这三层。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

函子Zion

一款支持AI搭建、可视化编辑和多端发布的全栈无代码开发平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

4923

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1011

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

1289

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

6981

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

3643

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

6960

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

9721

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

1310

2024.04.29

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

80

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 195人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn