¿Cómo habilitar el registro de MySQL?


36

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.

Agregué a 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, establecí permisos en 644, luego reinicié MySQL.

Me referí a ¿Dónde está mi registro mysql en OS X? para 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 hacer que MySQL inicie sesión?

Respuestas:


23

Aunque lo haya usado chmod 644, asegúrese de que mysql sea 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 de general_log, general_log_file, log, log_error, etc.

Actívelos según sea necesario y ejecute mysqladmin flushlogs según sea necesario.


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

13

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.cnfen el mío):

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

Los registros se crearán, de manera 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 predeterminados para el nombre de 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 diferentes nombres de archivo, especifique el nombre base siguiendo la log=directiva, y cualquier ruta y nombre de archivo que desee, 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.


5

Las respuestas anteriores estaban desactualizadas. Puede buscar el archivo de configuración en /etc/my.cnfo en Windows ./mysql/my.ini.

En la [mysqld]sección agregar

log_bin
general_log
log_error

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

Además, la logopción recomendada se deprecia y da como resultado el error

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

iniciando sesión ./mysql/data/host.erry el demonio muriendo en silencio. La configuración correcta es general-log.

Tampoco log-slow-querieses 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.


¡Gracias! No pude iniciar el servidor con la log=opción y pude descubrir por qué. Finalmente alguien con una respuesta. general-log
jiveturkey

2

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.


1

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

general_log = on

general_log_file=/var/log/mysql/mysql.log
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.