MySQL查看操作记录几种常用的方法

 更新时间:2025年09月24日 09:45:55   作者:iqjkq42958  
在数据库的日常管理中,了解表的操作历史是非常重要的,MySQL提供了多种方式来查看表的操作日志,包括查询日志、慢查询日志以及二进制日志等,这篇文章主要介绍了MySQL查看操作记录几种常用的方法,需要的朋友可以参考下

MySQL 提供了多种方式来查看数据库操作记录,以下是几种常用的方法:

1. 通用查询日志 (General Query Log)

通用查询日志记录了所有MySQL服务器接收到的SQL语句,包括连接和断开连接的信息。

启用方法

-- 查看当前状态
SHOW VARIABLES LIKE 'general_log%';

-- 启用通用查询日志
SET GLOBAL general_log = 'ON';

-- 设置日志文件路径(可选)
SET GLOBAL general_log_file = '/var/log/mysql/mysql-general.log';

查看日志

cat /var/log/mysql/mysql-general.log

注意:生产环境不建议长期开启,会影响性能。

2. 二进制日志 (Binary Log)

二进制日志记录所有更改数据的SQL语句(DDL和DML),用于复制和恢复。

查看方法

-- 查看是否启用
SHOW VARIABLES LIKE 'log_bin';

-- 查看所有二进制日志文件
SHOW BINARY LOGS;

-- 查看特定二进制日志内容
SHOW BINLOG EVENTS IN 'mysql-bin.000001';

使用mysqlbinlog工具

mysqlbinlog /var/lib/mysql/mysql-bin.000001

3. 慢查询日志 (Slow Query Log)

记录执行时间超过指定阈值的SQL语句。

启用方法

-- 查看当前状态
SHOW VARIABLES LIKE 'slow_query%';

-- 启用慢查询日志
SET GLOBAL slow_query_log = 'ON';

-- 设置慢查询阈值(秒)
SET GLOBAL long_query_time = 2;

-- 设置日志文件路径
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';

4. 审计日志 (Enterprise Audit Log)

MySQL企业版提供审计功能,社区版可以通过插件实现:

安装审计插件

INSTALL PLUGIN audit_log SONAME 'audit_log.so';

5. 查看历史命令

对于当前会话执行的命令:

-- 查看当前会话<a href="http://www.jianchenglaw.com/" rel="external nofollow"   target="_blank">执行</a>过的SQL
SELECT * FROM performance_schema.events_statements_history
WHERE thread_id = PS_CURRENT_THREAD_ID();

6. 使用information_schema和performance_schema

-- 查看最近执行的语句
SELECT * FROM performance_schema.events_statements_history_long
ORDER BY EVENT_ID DESC LIMIT 10;

-- 查看连接历史
SELECT * FROM performance_schema.events_waits_history_long
WHERE EVENT_NAME LIKE 'wait/io/socket%';

7. 查看MySQL历史文件(客户端)

MySQL客户端会记录执行过的命令:

cat ~/.mysql_history

注意事项

  • 日志记录会影响性能,生产环境应谨慎使用

  • 日志文件会占用磁盘空间,需要定期清理

  • 敏感操作日志应妥善保管

  • MySQL 8.0在性能监控方面有显著增强

日志文件位置

  • Linux系统通常位于:/var/log/mysql/

  • Windows系统通常位于MySQL安装目录的data文件夹中

根据您的具体需求选择合适的日志记录方式,对于安全审计建议使用审计插件,对于性能优化建议使用慢查询日志。

总结

到此这篇关于MySQL查看操作记录几种常用的方法的文章就介绍到这了,更多相关MySQL查看操作记录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何设置才能远程登录Mysql数据库

    如何设置才能远程登录Mysql数据库

    本地机器安装的数据库,本地程序可以访问,但是同事的机器却无法连接访问,发现是mysql数据库没有开启远程访问。那么我们需要如何设置呢,这就是本文探讨的内容了
    2014-08-08
  • MySQL查看操作记录几种常用的方法

    MySQL查看操作记录几种常用的方法

    在数据库的日常管理中,了解表的操作历史是非常重要的,MySQL提供了多种方式来查看表的操作日志,包括查询日志、慢查询日志以及二进制日志等,这篇文章主要介绍了MySQL查看操作记录几种常用的方法,需要的朋友可以参考下
    2025-09-09
  • MySQL 查找价格最高的图书经销商的几种SQL语句

    MySQL 查找价格最高的图书经销商的几种SQL语句

    不同的图书,在不同的经销商的价格不同,我们这里要找到每种图书最高的经销商是谁? 找最低的类似了。
    2009-07-07
  • xtrabackup备份还原MySQL数据库

    xtrabackup备份还原MySQL数据库

    这篇文章主要为大家详细介绍了xtrabackup备份还原MySQL数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • MySQL的Query Cache和PostgreSQL的pg_prewarm详解

    MySQL的Query Cache和PostgreSQL的pg_prewarm详解

    MySQL QueryCache(已废弃)缓存SQL结果,依赖全匹配且数据不变,高并发写时性能差;PostgreSQL pg_prewarm预加载数据页至共享缓冲区,提升冷启动效率,需手动维护,建议用应用层缓存或InnoDB BufferPool替代
    2025-07-07
  • mysql之group by和having用法详解

    mysql之group by和having用法详解

    这篇文章主要介绍了mysql之group by和having用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • MySql delimiter的作用是什么

    MySql delimiter的作用是什么

    其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。
    2010-09-09
  • MySQL中JSON_ARRAYAGG和JSON_OBJECT函数功能和用法

    MySQL中JSON_ARRAYAGG和JSON_OBJECT函数功能和用法

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据,在MySQL数据库中,JSON格式的数据处理已经变得越来越常见,本文将深入探讨这两个函数的用途、语法和示例,以帮助您更好地理解它们的功能和用法,需要的朋友可以参考下
    2023-09-09
  • Mysql中的innoDB如何解决幻读

    Mysql中的innoDB如何解决幻读

    这篇文章主要介绍了Mysql中的innoDB如何解决幻读,幻读是指在同一个事务中,前后两次查询相同范围的时候得到的结果不一致,文章将介绍InnoDB引入间隙锁和next-key lock机制去解决幻读问题,感兴趣的小伙伴可以参考一下
    2022-04-04
  • MySQL实现查询分位值的示例代码

    MySQL实现查询分位值的示例代码

    本文主要介绍了MySQL实现查询分位值的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论