Pregunta ¿Cómo habilitar el registro de MySQL?


Estoy ejecutando MySQL 5.0.45 en OS X 10.6.1 y no puedo hacer que MySQL registre nada. Estoy depurando una aplicación y necesito ver todas las consultas y errores.

He añadido a la etc / my.cnf:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

Usé sudo para crear dos archivos de registro, establecer permisos en 644 y luego reiniciar MySQL.

Me referí a ¿Dónde está mi registro mysql en OS X? con el fin de solucionar problemas.

Corriendo:

ps auxww|grep [m]ysqld

Devoluciones:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

Y corriendo:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

Devoluciones:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

Corriendo:

mysql> show variables like '%log%';

Devoluciones:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

¿Alguna ayuda sobre cómo puedo obtener MySQL para iniciar sesión?


36
2017-10-04 00:11


origen




Respuestas:


A pesar de que utilizaste chmod 644, asegúrese de que mysql es el propietario de los registros.

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

A continuación, reinicie mysqld.

Luego, inicie sesión en mysql y ejecute:

mysql> show variables like '%log%';

Mira los valores para general_log, general_log_file, log, log_error, etc.

Enciéndalos cuando sea necesario y ejecute mysqladmin flushlogs según sea necesario.


22
2017-10-05 03:27



Ahora iniciando sesión. Debe haber sido la supervisión de la propiedad. Aunque, vea mi pregunta editada para los resultados de "mostrar variables como la consulta '% log%'". MySQL se está registrando en /var/log/mysql.log, ¿por qué no se muestra? - RyOnLife


Para habilitar los archivos de registro, debe asegurarse de que una o más de las siguientes directivas estén en la [mysqld] sección del archivo de configuración principal de su servidor mysql (/etc/my.cnf en la mia):

[mysqld]
log-bin
log
log-error
log-slow-queries

Los registros se crearán, de forma predeterminada, en el mismo directorio de datos que contiene los subdirectorios de la base de datos (normalmente /var/lib/mysql) y los nombres de los archivos de registro están predeterminados con el nombre del host seguido de un sufijo que coincide con los nombres de las directivas anteriores (por ejemplo, -bin, -slow-consultas, etc.).

Para mantener sus registros en una ruta diferente, o usando nombres de archivo diferentes, especifique el nombre de base después de log= directiva, y cualquier ruta y nombre de archivo que te gusta, por ejemplo:

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

Debe reiniciar mysqld para que estos cambios surtan efecto.


13
2018-03-30 14:33





Las respuestas anteriores estaban fuera de fecha. Puedes mirar el archivo de configuración en /etc/my.cnf o en las ventanas ./mysql/my.ini.

En el [mysqld] sección añadir

log_bin
general_log
log_error

La documentación para Windows indica que los registros se almacenan en ProgramData/MySQL/MySQL Server 5.6/. Ignóralo porque es una mentira.

Además los recomendados. log La opción es depreciada y da como resultado el error.

ambiguous option '--log' (log-bin, log_slave_updates)

estar conectado ./mysql/data/host.err y el demonio muriendo silenciosamente. El ajuste correcto es general-log.

también log-slow-queries No es válido y causó el error.

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

Así que asegúrese de mantenerse alejado de eso también.


6
2018-04-28 15:49



¡Gracias! No pude iniciar el servidor con el log= Opción y podría por mi vida averiguar por qué. Finalmente alguien con una respuesta. general-log - jiveturkey


Ingrese la línea de comando mysql con super privilegios y realice:

SET GLOBAL general_log_file = '/var/log/mysql/mysql.log';

En mi caso, ¡no importaba si ya tenía esta variable configurada con el mismo valor! Además, cambié los permisos y el propietario del archivo como se menciona en las otras publicaciones.


2
2017-09-07 12:13





Pruebe diferentes configuraciones de registro en my.cnf. En mi caso necesitaba:

general_log = on

general_log_file=/var/log/mysql/mysql.log

1
2017-08-05 12:34