Onde meu mysql está logado no OS X?

66

Eu verifiquei / var / log e / usr / local / mysql e não consigo encontrar o log. Eu estou tentando solucionar um erro ao estabelecer uma conexão de banco de dados com uma função de php.

    
por Tony 18.07.2009 / 15:58

8 respostas

86

Como o Chealion mencionou, existem várias maneiras que o seu mysql poderia ter sido instalado. Cada um dos quais colocará seu diretório de dados e / ou registros em diferentes locais. O comando a seguir dará a você (e a nós) uma boa indicação de onde procurar.

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

Você pode postar o resultado desse comando aqui, por favor? O meu parece assim:

_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 disso, você pode ver que meu datadir é /opt/local/var/db/mysql (porque eu instalei via MacPorts). Vamos levar esta lição um pouco mais longe ...

Na primeira linha, você pode ver que o meu daemon é /opt/local/libexec/mysqld . O mysqld pode ser chamado com --verbose --help para obter uma lista de todas as opções de linha de comando (e aqui está a parte importante / valiosa!) Seguidos pelos valores que seriam usados se você estivesse iniciando o mysqld em vez de apenas verificar a ajuda saída. Os valores são o resultado de sua configuração de tempo de compilação, my.cnf file e qualquer opção de linha de comando. Eu posso explorar esse recurso para descobrir EXATAMENTE onde estão meus arquivos de log, assim:

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

O meu parece com isto:

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 E BEHOLD! todos os conselhos do mundo não me ajudariam porque meu arquivo de log é mantido em um local completamente fora do padrão! Eu mantenho o meu em /tmp/ porque no meu laptop, eu não me importo (na verdade eu prefiro) perder todos os meus logs na reinicialização.

Vamos juntar tudo e torná-lo um oneliner:

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

Execute esse comando e você obterá uma lista de todos os logs da sua instância em execução do mysql.

Aproveite!

Este Bash-Fu trazido a você de graça pelo meu compromisso com todas as coisas do Open Source.

    
por 20.07.2009 / 17:06
10

Outra maneira de encontrar essa informação é usar lsof .

  1. Use o Activity Monitor para encontrar o PID de mysql ou use ps -ef | grep mysqld para encontrá-lo.

  2. sudo lsof -p PID_OF_MYSQLD e veja quais arquivos o MySQL tem aberto.

por 29.10.2012 / 14:30
10

Existem 3 tipos de logs MySQL / MariaDB:

Verifique as configurações e a localização dos registros acima por meio desse comando shell:

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

Por padrão, os logs são armazenados em seu diretório de dados, portanto, verifique o local por meio desse comando shell:

mysql -se "SELECT @@datadir"

Para visualizar seu log de erros, você pode executar:

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

Se você tiver um registro geral ativado, para visualizá-lo, execute:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
    
por 09.06.2016 / 15:09
5

Demorei um tempo para encontrar isso ... tente este local: '

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
    
por 25.07.2012 / 15:32
3

By default, all log files are created in the mysqld data directory.

Fonte: Documentação do MySQL

Você pode usar mysqlbinlog para ler os arquivos de log binários em / usr / local / mysql / data / (na minha instalação nem todos eram binários). Alguns erros são simplesmente direcionados para stderr, então você pode querer verificar /var/log/system.log também.

    
por 18.07.2009 / 16:10
0

A pasta que contém esse log pode não estar acessível para você sem 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

Se você encontrar um arquivo de log grande e quando estiver usando o Time Machine, talvez queira ler O que o Time Machine está fazendo? na falha do servidor.

    
por 18.07.2009 / 16:59
0

Por padrão, todos os arquivos de log são criados no diretório de dados do mysqld. Infelizmente, muitas pessoas não colocam seus arquivos de log (e programas) em seus locais típicos. Eu sou um deles!

Eu mesmo passei por essa rotina com o MySQL até experimentar Navicat for MySQL . Mais tarde, atualizei para Navicat Premium . Ambos têm uma ferramenta de monitoramento que contém uma guia com todas as variáveis de servidor em uma lista abrangente. Aqui está uma captura de tela com a variável de servidor log_error:

variável do servidor log_error na Ferramenta de monitoramento do Navicat Server

Você também pode definir as variáveis diretamente na lista.

Felicidades!

    
por 17.11.2018 / 22:40
-1

/Library/Logs/MySQL.log

    
por 18.07.2009 / 16:53