MySQL 查看接收到的 SQL 记录
在 MySQL 中,有几种方法可以查看服务器接收到的 SQL 查询记录:
1. 通用查询日志 (General Query Log)
这是最全面的方法,会记录所有收到的 SQL 语句。
-- 查看当前状态
SHOW VARIABLES LIKE 'general_log%';
-- 开启通用查询日志
SET GLOBAL general_log = 'ON';
-- 设置日志文件路径(可选)
SET GLOBAL general_log_file = '/var/log/mysql/mysql-general.log';
-- 关闭日志
SET GLOBAL general_log = 'OFF';
2. 慢查询日志 (Slow Query Log)
只记录执行时间超过指定阈值的查询:
-- 查看慢查询配置
SHOW VARIABLES LIKE 'slow_query%';
SHOW VARIABLES LIKE 'long_query_time';
-- 启用慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- 单位:秒
-- 设置日志文件路径(可选)
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
3. Performance Schema
MySQL的Performance Schema可以提供详细的SQL执行信息:
-- 启用相关消费者和工具
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%statements%';
-- 查看最近的SQL语句
SELECT * FROM performance_schema.events_statements_history_long;
4. Process List
实时查看当前正在执行的SQL:
SHOW FULL PROCESSLIST;
Linux系统下直接监控TCP流量
如果你需要临时监控而无法修改MySQL配置:
sudo tcpdump -i any -s0 -l port mysql -w /tmp/mysql.pcap
然后使用Wireshark分析捕获的文件。
⚠️注意事项
- 性能影响:开启完整查询日志会对性能产生显著影响,不建议在生产环境长期开启。
- 磁盘空间:确保有足够的磁盘空间存放日志文件。
- 安全性:日志可能包含敏感信息,需妥善保管访问权限。
内容由零声教学AI助手提供,问题来源于学员提问