要查看MySQL执行过的语句,可以通过以下几种方法实现,具体选择取决于需求(实时查看、历史查询等):
一、查看慢查询日志
配置慢查询日志 在MySQL配置文件(如`my.cnf`或`my.ini`)中添加以下配置:
```ini
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 1 记录执行时间超过1秒的SQL
```
重启MySQL服务使配置生效。
查看慢查询日志内容
使用以下命令查看日志文件:
```sql
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'slow_query_log_file';
```
或直接查看日志文件(如`cat /var/log/mysql/slow-query.log`)。
二、查看二进制日志(Binary Log)
配置二进制日志
在配置文件中添加:
```ini
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
```
重启MySQL服务。
查询已执行的删除语句
使用以下SQL语句:
```sql
SELECT * FROM mysql-bin.000001; -- 替换为实际的时间戳文件
```
该表记录所有修改数据的操作,包括删除语句。
三、使用系统变量查询历史语句
查询当前事务
通过`information_schema.INNODB_TRX`表:
```sql
SELECT * FROM information_schema.INNODB_TRX;
```
可查看当前正在执行的事务及相关SQL语句。
查询锁信息
使用:
```sql
SELECT * FROM information_schema.INNODB_LOCKS;
SELECT * FROM information_schema.INNODB_LOCK_WAITS;
```
了解锁等待情况。
四、使用MySQL客户端命令历史
查看客户端命令历史
执行:
```sql
SHOW VARIABLES LIKE 'auto_rehash';
SHOW VARIABLES LIKE 'auto_vertical-output';
```
然后查询`mysql.client_command`表:
```sql
SELECT * FROM mysql.client_command;
```
该表记录客户端执行的历史命令。
注意事项
权限问题: 部分日志文件(如二进制日志)可能需要特定权限才能查看,建议使用`sudo`或以`root`用户操作。 性能影响
历史数据量:命令日志和查询日志可能占用大量磁盘空间,长期开启需谨慎。
通过以上方法,可以灵活地查看MySQL执行过的语句,满足不同场景的需求。