Respostas:
Como o Chealion mencionou, existem várias maneiras pelas quais o mysql poderia ter sido instalado. Cada um dos quais colocará seu diretório de dados e / ou logs em locais diferentes. O comando a seguir fornecerá 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 fica 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 essa lição um pouco mais longe ...
Na primeira linha, você pode ver 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 é a parte importante / importante!), Seguido pelos valores que seriam utilizados se estivesse lançando mysqld em vez de apenas verificar a saída de ajuda. Os valores são o resultado da sua configuração de tempo de compilação, my.cnf
arquivo 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 fica assim:
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 /tmp/
porque, no meu laptop, não me importo (na verdade prefiro) de perder todos os meus logs na reinicialização.
Vamos juntar tudo e fazer de você um oneliner:
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
Execute esse comando e você obterá uma lista de todos os logs para sua instância em execução do mysql.
Desfrutar!
Este Bash-Fu trouxe para você de graça pelo meu compromisso com todas as coisas Open Source.
Existem 3 tipos de logs do MySQL / MariaDB:
log_error
para o log de mensagens de erro;general_log_file
para o arquivo de log de consulta geral (se ativado por general_log
);slow_query_log_file
para o arquivo de log de consulta lenta (se ativado por slow_query_log
);Verifique as configurações e o local dos logs acima por este comando do 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 a localização com este 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 ativado o log geral, para visualizá-lo, execute:
sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
Demorei um pouco para encontrar isso ... tente este local: '
sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
/usr/local/var/mysql/<USERNAME>.local.err
Por padrão, todos os arquivos de log são criados no diretório de dados do mysqld.
Fonte: Documentação 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 ao stderr, então você também pode verificar /var/log/system.log
.
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, poderá ler O que o Time Machine está fazendo? na falha do servidor.
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 o Navicat for MySQL . Mais tarde, atualizei para o Navicat Premium . Ambos têm uma ferramenta de monitoramento que contém uma guia com todas as variáveis do servidor em uma lista abrangente. Aqui está uma captura de tela com a variável do servidor log_error:
variável de servidor log_error na ferramenta de monitoramento do Navicat Server
Você também pode definir as variáveis ali na lista.
Felicidades!
/Library/Logs/MySQL.log
mysqladmin variables
é agora o comando preferido para obter o valor atual em vez de diretamente usandomysqld