Cómo ver los archivos de registro en MySQL?


He leído que Mysql server crea un archivo de registro donde mantiene un registro de todas las actividades, como cuándo y qué consultas se ejecutan.

¿Puede alguien decirme dónde existe en mi sistema? ¿Cómo puedo leerlo?

Básicamente, necesito hacer una copia de seguridad de la base de datos con diferentes entradas [copia de seguridad entre dos fechas], así que creo que necesito usar el archivo de registro aquí, por eso quiero hacerlo...

Creo que este registro debe estar protegido de alguna manera porque la información confidencial, como los nombres de usuario y la contraseña puede ser registrada [si alguna consulta requiere esto]; por lo que puede ser segura, no es fácil de ver?

Tengo acceso root al sistema, ¿cómo puedo ver el registro?

Cuando intento abrir /var/log/mysql.el registro está vacío.

Este es mi archivo de configuración:

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
log = /var/log/mysql/mysql.log 
binlog-do-db=zero



user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking

bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1
 138
Author: kenorb, 2011-03-26

8 answers

Aquí hay una forma sencilla de habilitarlos. En mysql necesitamos ver a menudo 3 registros que son necesarios en su mayoría durante el desarrollo de cualquier proyecto.

  • The Error Log. Contiene información sobre los errores que se producen mientras el servidor se está ejecutando (también se inicia y detiene el servidor)

  • The General Query Log. Este es un registro general de lo que es mysqld haciendo (conectar, desconectar, consultas)

  • The Slow Query Log. Consiste en sentencias SQL " lentas "(como indicado por su nombre).

Por defecto no hay archivos de registro habilitados en MYSQL. Todos los errores se mostrarán en el syslog.(/var / log / syslog)

Para habilitarlos simplemente siga los pasos a continuación

Paso 1: Vaya a este archivo(/etc/mysql/conf.d / mysqld_safe_syslog.cnf ) y eliminar o comentar esas líneas.

Paso 2: Vaya al archivo de configuración de mysql(/etc/mysql/my.cnf) y añadir las siguientes líneas

Para habilitar el registro de errores agregue lo siguiente

[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log

[mysqld]
log_error=/var/log/mysql/mysql_error.log

To enable general query log add following

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Para habilitar el Registro de Consulta Lenta, agregue lo siguiente

log_slow_queries       = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

Paso3: guarde el archivo y reinicie mysql usando los siguientes comandos

service mysql restart

Para habilitar los registros en tiempo de ejecución, inicie sesión en el cliente mysql (mysql-u root-p ) y proporcione:

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

Finalmente, una cosa que me gustaría mencionar aquí es Leí esto de un blog. Gracias. Funciona para mí.

Haga clic en aquí para visitar el blog

 113
Author: loyola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-28 19:25:12

Tienes que activar el registro de consultas en mysql.

1.editar /etc / my.cnf

[mysqld]
log=/tmp/mysql.log

2.reinicie el equipo o el servicio mysqld

service mysqld restart

3.abra phpmyadmin / cualquier aplicación que use mysql / mysql console y ejecute una consulta

4.cat / tmp / mysql.log (debería ver la consulta)

 42
Author: danidacar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-28 13:42:17

Los registros de MySQL están determinados por las variables globales tales como:

  • log_error para el registro de mensajes de error;
  • general_log_file para el archivo de registro de consulta general (si está habilitado por general_log);
  • slow_query_log_file para el archivo de registro de consulta lenta (si está habilitado por slow_query_log);

Para ver la configuración y su ubicación, ejecute este comando de shell:

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log

Para imprimir el valor del registro de errores, ejecute este comando en la terminal:

mysql -e "SELECT @@GLOBAL.log_error"

A lea el contenido del archivo de registro de errores en tiempo real, ejecute:

sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")

Nota: Pulse Control-C cuando termine

Cuando el registro general está habilitado, intente:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

Para usar mysql con el acceso por contraseña, agregue el parámetro -p o -pMYPASS. Para mantenerlo recordado, puede configurarlo en su ~/.my.cnf, por ejemplo,

[client]
user=root
password=root

Así que será recordado por la próxima vez.

 25
Author: kenorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-07 19:52:42

En mi (tengo LÁMPARA instalada) /etc/ mysql/mi.archivo cnf Encontré las siguientes líneas comentadas en la sección [mysqld]:

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Tuve que abrir este archivo como superusuario, con terminal:

sudo geany /etc/mysql/my.cnf

(Prefiero usar Geany en lugar de gedit o VI, no importa)

Acabo de descomentarlos y guardar el archivo y luego restatt mysql con

sudo service mysql restart

Ejecute varias consultas, abra el archivo anterior (/var/log/mysql/mysql.log) y el log estaba allí :)

 9
Author: Line,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-28 18:05:19

Del manual de referencia de MySQL:

De forma predeterminada, todos los archivos de registro se crean en el directorio data.

Compruebe la carpeta /var/lib/mysql.

 8
Author: Mark Nenadov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-07 17:00:27

Para complementar la respuesta de loyola vale la pena mencionar que a partir de MySQL 5.1 log_slow_queries está en desuso y se reemplaza por slow-query-log

Usar log_slow_queries hará que su service mysql restart o service mysql start falle

 3
Author: Oussama Romdhane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:31:37
shell> mysqladmin flush-logs


shell> mv host_name.err-old backup-directory
 1
Author: Test,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-15 16:40:08

Además de las respuestas anteriores, puede pasar los parámetros de la línea de comandos al proceso mysqld para las opciones de registro en lugar de editar manualmente el archivo conf. Por ejemplo, para habilitar el registro general y especificar un archivo:

mysqld --general-log --general-log-file=/var/log/mysql.general.log

Confirmando otras respuestas anteriores, mysqld --help --verbose le da los valores del archivo conf( por lo que ejecutar con opciones de línea de comandos general-log es FALSE); mientras que mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log le da:

general_log     ON
general_log_file        /var/log/mysql.general.log

Use una sintaxis ligeramente más compacta para el registro de errores:

mysqld --general-log --general-log-file=/var/log/mysql.general.log --log-error=/var/log/mysql.error.log
 1
Author: br3w5,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-22 11:02:07