Este artículo explica cómo habilitar el log de consultas de MySQL. Esto permite visualizar todas las consultas SQL que se hacen al motor.

Para comenzar, conectarse como root:

I have no name!@ca-dev-mysql:/$ mysql -u root -p

Verificar que la tabla general_log esté presente:

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> describe general_log;
+--------------+---------------------+------+-----+----------------------+--------------------------------+
| Field        | Type                | Null | Key | Default              | Extra                          |
+--------------+---------------------+------+-----+----------------------+--------------------------------+
| event_time   | timestamp(6)        | NO   |     | CURRENT_TIMESTAMP(6) | on update CURRENT_TIMESTAMP(6) |
| user_host    | mediumtext          | NO   |     | NULL                 |                                |
| thread_id    | bigint(21) unsigned | NO   |     | NULL                 |                                |
| server_id    | int(10) unsigned    | NO   |     | NULL                 |                                |
| command_type | varchar(64)         | NO   |     | NULL                 |                                |
| argument     | mediumblob          | NO   |     | NULL                 |                                |
+--------------+---------------------+------+-----+----------------------+--------------------------------+
6 rows in set (0.01 sec)

El query log por defecto está deshabilitado, con lo cual se encuentra vacío:

mysql> select * from general_log limit 10;
Empty set (0.00 sec)

Para habilitar el log de consultas, ejecutar los siguientes comandos SQL:

SET global general_log = 1;
SET global log_output = 'table';

Luego de ejecutar consultas desde la aplicación, es posible buscar las consultas SQL ejecutadas:

mysql> select event_time,user_host,command_type,argument from general_log where argument like '%START%'\G
*************************** 1. row ***************************
  event_time: 2021-05-12 19:09:00.227948
   user_host: app[app] @  [172.21.0.2]
command_type: Query
    argument: START TRANSACTION
1 row in set (0.00 sec)

Tal como se demuestra, la consulta SQL ejecutada queda registrada en el campo argument.

Para deshabilitar el query log, ejecutar:

SET global general_log = 0;

No es conveniente mantener habilitado constantemente el log de consultas ya que puede consumir mucho espacio en disco, sino que debe ser utilizado sólo para depurar errores con el backend.

Referencias

Compartí este artículo