如何读取MySQL的所有的SQL语句执行记录?

如题,因为经常想知道SQL执行不成功是Java的问题还是SQL语句的问题,另外也想知道MySQL端接收到的真实SQL语句是什么,所以想请问有没有办法读取MySQL的所有执行的SQL的记录,或者是否可以设置MySQL保存相应的SQL执行日志呢?感谢!

阅读 2.7k
1 个回答

可以使用 MySQL 的 "general_log" 系统表。这个表会记录所有执行的 SQL 语句,包括执行时间、用户名、客户端地址等信息。

要使用 "general_log" 系统表,需要在 MySQL 中开启日志功能。具体来说,可以在 MySQL 的配置文件中(例如 my.cnf)添加以下行:

general_log=1
general_log_file=/path/to/log/file

然后重启 MySQL 服务,就可以开始记录日志了。

之后,你可以使用 SQL 语句查询 "general_log" 系统表,来获取所有 SQL 语句的执行记录。例如:

SELECT * FROM mysql.general_log WHERE event_time BETWEEN '2022-01-01 00:00:00' AND '2022-01-31 23:59:59';

这条语句会返回 2022 年 1 月份所有已执行的 SQL 语句的信息。

请注意:开启日志会对 MySQL 的性能造成一定影响,因为 MySQL 需要花费额外的时间来记录日志。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题