要查看MySQL执行的所有以往SQL语句历史命令,可以采用以下几种方法:
通过MySQL查询日志功能
启用查询日志:首先需要在MySQL的配置文件(通常是`my.cnf`或`my.ini`)中启用查询日志功能。找到`general_log`配置项,并将其值设置为`1`:
```ini
[mysqld]
general_log = 1
```
重启MySQL服务:保存配置文件并重启MySQL服务,使配置生效。
查看日志文件:使用以下命令查看查询日志文件的路径:
```sql
SHOW VARIABLES LIKE 'general_log_file';
```
查看日志内容:通过查看日志文件,可以获取历史执行的SQL语句。例如,使用`tail -f`命令实时查看日志文件内容:
```sh
tail -f /path/to/general.log
```
通过MySQL系统表
查询`information_schema`表:可以使用以下命令查询`INNODB_TRX`表,来获取当前正在执行的事务信息,从而间接查看对应的SQL语句:
```sql
SELECT * FROM information_schema.INNODB_TRX;
```
查询其他系统表:还可以查询`INNODB_LOCKS`和`INNODB_LOCK_WAITS`表,来获取锁信息和等待锁的事务信息。
使用MySQL官方工具
查看正在执行的SQL:可以使用`SHOW PROCESSLIST`命令查看当前正在执行的SQL语句:
```sql
SHOW PROCESSLIST;
```
查看历史命令:MySQL客户端本身没有直接提供查看历史命令的功能,但可以通过查询`mysql.client_command`表来获取历史命令的信息(需要确认`auto-rehash`和`auto-vertical-output`配置项已启用):
```sql
SELECT * FROM mysql.client_command;
```
通过命令行模式
临时开启日志模式:可以通过以下命令临时开启日志模式并执行SQL语句,然后关闭日志模式:
```sql
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
-- 执行SQL语句
SELECT * FROM table_name;
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'OFF';
```
查看日志文件:在日志模式下执行SQL语句后,可以在指定的日志文件(如`/var/log/mysql/mysql.log`)中查看历史执行的SQL语句。
建议
启用查询日志:如果需要长期记录所有执行的SQL语句,建议启用查询日志功能,并定期检查日志文件。
使用系统表:对于需要实时查看当前正在执行的事务信息,可以使用`information_schema`表。
临时开启日志模式:如果只是临时需要查看某个SQL语句的执行情况,可以通过临时开启日志模式来实现。
通过以上方法,可以有效地查看MySQL执行的所有以往SQL语句历史命令。