¿Dónde está mi registro mysql en OS X?

74

Revisé / var / log y / usr / local / mysql y parece que no puedo encontrar el registro. Estoy tratando de solucionar un error al establecer una conexión de base de datos con una función php.

Tony
fuente

Respuestas:

95

Como mencionó Chealion, hay varias maneras en que su mysql podría haberse instalado. Cada uno de los cuales colocará su directorio de datos y / o registros en diferentes ubicaciones. El siguiente comando le dará a usted (y a nosotros) una buena indicación de dónde buscar.

ps auxww|grep [m]ysqld

# Putting brackets around the first char is a `grep`+`ps` trick
# to keep it from matching its own process.
# Note: For zsh compatibility put quotes around the grep regex

¿Puedes publicar el resultado de ese comando aquí, por favor? El mío se ve así:

_mysql     101   0.0  0.3   112104  13268   ??  S    12:30AM   0:13.20 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql --user=mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
root        76   0.0  0.0   600172    688   ??  S    12:30AM   0:00.02 /bin/sh /opt/local/lib/mysql/bin/mysqld_safe --datadir=/opt/local/var/db/mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid

A partir de eso, puede ver que mi datadir es /opt/local/var/db/mysql(porque lo instalé a través de MacPorts). Llevemos esta lección un poco más lejos ...

Desde la primera línea puedes ver que mi demonio es /opt/local/libexec/mysqld. Se mysqldpuede invocar con --verbose --helppara obtener una lista de todas las opciones de línea de comandos (¡y aquí está la parte importante / valiosa!) Seguida de los valores que se usarían si iniciara mysqld en lugar de simplemente verificar la salida de ayuda. Los valores son el resultado de su configuración de tiempo de compilación, my.cnfarchivo y cualquier opción de línea de comando. Puedo explotar esta función para averiguar EXACTAMENTE dónde están mis archivos de registro, así:

/opt/local/libexec/mysqld --verbose --help|grep '^log'

El mío se ve así:

log                               /tmp/mysql.log
log-bin                           /tmp/mysql-bin
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /tmp/mysql.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

LO Y HE AQUÍ! ¡Todos los consejos del mundo no me ayudarían porque mi archivo de registro se mantiene en una ubicación completamente no estándar! Mantengo el mío /tmp/porque en mi computadora portátil, no me importa (en realidad prefiero) perder todos mis registros al reiniciar.

Pongámoslo todo junto y te haremos una línea:

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

Ejecute ese comando y obtendrá una lista de todos los registros para su instancia en ejecución de mysql.

¡Disfrutar!

Este Bash-Fu traído a usted de forma gratuita por mi compromiso con todas las cosas de código abierto.

Bruno Bronosky
fuente
2
mysqladmin variablesahora es el comando preferido para obtener el valor actual en lugar de usarlo directamentemysqld
John Cummings
@JohnCummings, Fuente?
Pacerier
Hoy recibí un voto negativo sin comentarios. Mantengo todas mis respuestas. Incluso los que tienen 10 años. No estás ayudando a nadie mediante la votación negativa. ¡Deja un comentario!
Bruno Bronosky
@ jm3 cuidado de elaborar? Ya no tengo acceso a MacOS.
Bruno Bronosky
12

Hay 3 tipos de registros de MySQL / MariaDB:

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

Verifique la configuración y la ubicación de los registros anteriores mediante este comando de shell:

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

Por defecto, los registros se almacenan en su directorio de datos, así que verifique la ubicación con este comando de shell:

mysql -se "SELECT @@datadir"

Para ver su registro de errores, puede ejecutar:

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

Si tiene habilitado el registro general, para verlo, ejecute:

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

Otra forma de encontrar esta información es usarla lsof.

  1. Use Activity Monitor para encontrar el PID de mysql, o use ps -ef | grep mysqldpara encontrarlo.

  2. sudo lsof -p PID_OF_MYSQLD y ver qué archivos tiene abierto MySQL.

tobym
fuente
6

Me tomó un tiempo encontrar esto ... prueba esta ubicación: '

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
Mark Shust
fuente
3
El mío estaba en/usr/local/var/mysql/<USERNAME>.local.err
jonnysamps
3

Por defecto, todos los archivos de registro se crean en el directorio de datos mysqld.

Fuente: Documentación MySQL

Puede usar mysqlbinlogpara leer los archivos de registro binarios en / usr / local / mysql / data / (en mi instalación no todos eran binarios). Algunos errores simplemente se dirigen a stderr, por lo que es posible que también desee verificarlos /var/log/system.log.

Chealion
fuente
No tengo un directorio de datos en el directorio mysql. He buscado en todo el directorio / usr / local / mysql / y no puedo encontrar el registro. No hay forma de ver la configuración de MySQL? como un phpinfo ()
Tony,
¿Cómo instaló MySQL? ¿El MySQL preinstalado con Mac OS X Server, MacPorts o el paquete oficial de MySQL?
Chealion el
0

Es posible que no pueda acceder a la carpeta que contiene ese registro sin usar sudo:

sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x---   4 _mysql  wheel    136 Jul 10 23:06 data

Si encuentra un archivo de registro grande y cuando usa Time Machine, es posible que desee leer ¿Qué está haciendo Time Machine? en la falla del servidor.

Arjan
fuente
no tengo dir de datos en / usr / local / mysql
Tony
0

Por defecto, todos los archivos de registro se crean en el directorio de datos mysqld. Desafortunadamente, muchas personas no colocan sus archivos de registro (y programas) en sus ubicaciones típicas. ¡Yo soy uno de ellos!

Realicé esta rutina yo mismo con MySQL hasta que probé Navicat para MySQL . Más tarde me actualicé a Navicat Premium . Ambos tienen una herramienta de monitoreo que contiene una pestaña con todas las variables del servidor en una lista completa. Aquí hay una captura de pantalla con la variable de servidor log_error:

variable de servidor log_error en la herramienta de supervisión del servidor Navicat

variable de servidor log_error en la herramienta de supervisión del servidor Navicat

También puede establecer las variables allí mismo en la lista.

¡Salud!

Rob Gravelle
fuente
-2

/Library/Logs/MySQL.log

morgant
fuente
veo a otros registros de allí, pero no MySQL
, Tony
¿Qué versión de Mac OS X Server es esta? En general, querrá buscar en / var / log / & / Library / Logs / en Mac OS X Server. Más específico a este problema, mire /var/log/system.log, puede haber algo de uso en / var / mysql (como los archivos de registro .err), pero yo (en la configuración predeterminada del servidor Leopard) también tengo el mencionado / Library / Logs / MySQL.log. ¿Estás intentando conectarte a través del zócalo o una conexión de red? Si es esto último, ¿"Habilitó las conexiones de red" en Server Admin (en Leopard; en Tiger era una aplicación separada en / Aplicaciones / Utilidades)?
Morgant