Risposte:
Come accennato da Chealion, ci sono diversi modi in cui il tuo mysql avrebbe potuto essere installato. Ognuno dei quali posizionerà la tua directory dei dati e / o i log in posizioni diverse. Il seguente comando ti darà (e noi) una buona indicazione di dove cercare.
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
Puoi pubblicare il risultato di quel comando qui per favore? Il mio assomiglia a questo:
_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
Da questo puoi vedere che il mio datadir è /opt/local/var/db/mysql
(perché ho installato tramite MacPorts). Prendiamo questa lezione un po 'oltre ...
Dalla prima riga puoi vedere il mio demone è /opt/local/libexec/mysqld
. La mysqld
può essere chiamato con --verbose --help
per ottenere una lista di tutte le opzioni della riga di comando (e qui è la parte importante / prezioso!) Seguita dai valori che sarebbero stati utilizzati se si stesse avviando mysqld invece di controllare l'output di aiuto. I valori sono il risultato della configurazione del tempo di compilazione, del my.cnf
file e di tutte le opzioni della riga di comando. Posso sfruttare questa funzione per scoprire ESATTAMENTE dove sono i miei file di registro, in questo modo:
/opt/local/libexec/mysqld --verbose --help|grep '^log'
Il mio assomiglia a questo:
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! tutti i consigli del mondo non mi avrebbero aiutato perché il mio file di registro è conservato in una posizione completamente non standard! Tengo il mio /tmp/
perché sul mio laptop non mi interessa (in realtà preferisco) perdere tutti i miei log al riavvio.
Mettiamo tutto insieme e rendiamoci un oneliner:
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
Esegui quel comando e otterrai un elenco di tutti i registri per l'istanza corrente di mysql.
Godere!
Questo Bash-Fu offerto gratuitamente dal mio impegno per tutte le cose Open Source.
Esistono 3 tipi di registri MySQL / MariaDB:
log_error
per il registro dei messaggi di errore;general_log_file
per il file di registro delle query generale (se abilitato da general_log
);slow_query_log_file
per il file di registro delle query lente (se abilitato da slow_query_log
);Controllare le impostazioni e la posizione dei registri sopra con questo comando shell:
mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log
Per impostazione predefinita, i log sono memorizzati nella tua directory dei dati, quindi controlla la posizione con questo comando shell:
mysql -se "SELECT @@datadir"
Per visualizzare il registro degli errori, è possibile eseguire:
sudo tail -f $(mysql -Nse "SELECT @@log_error")
Se hai abilitato il registro generale, per visualizzarlo, esegui:
sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
Mi sono preso un po 'di tempo per trovare questo ... prova questa posizione: "
sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
/usr/local/var/mysql/<USERNAME>.local.err
Per impostazione predefinita, tutti i file di registro vengono creati nella directory dei dati mysqld.
Fonte: documentazione MySQL
Puoi usare mysqlbinlog
per leggere i file di registro binari in / usr / local / mysql / data / (nella mia installazione non tutti erano binari). Alcuni errori sono semplicemente diretti a stderr, quindi potresti voler controllare /var/log/system.log
anche.
La cartella che contiene quel registro potrebbe non essere accessibile a te senza usare 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 ti capita di trovare un file di registro di grandi dimensioni e quando stai usando Time Machine, potresti voler leggere Cosa sta facendo Time Machine? in caso di errore del server.
Per impostazione predefinita, tutti i file di registro vengono creati nella directory dei dati mysqld. Sfortunatamente, molte persone non mettono i loro file di registro (e programmi) nelle loro posizioni tipiche. Sono uno di loro!
Ho seguito questa routine con MySQL fino a quando non ho provato Navicat per MySQL . Successivamente ho eseguito l' aggiornamento a Navicat Premium . Entrambi hanno uno strumento di monitoraggio che contiene una scheda con tutte le variabili del server in un elenco completo. Ecco uno screenshot con la variabile del server log_error:
variabile server log_error in Navicat Server Monitoring Tool
Puoi anche impostare le variabili proprio lì nell'elenco.
Saluti!
/Library/Logs/MySQL.log
mysqladmin variables
è ora il comando preferito per ottenere il valore corrente invece di usarlo direttamentemysqld