sviluppo-web-qa.it

Dov'è il mio registro mysql su OS X?

Ho controllato/var/log e/usr/local/mysql e non riesco a trovare il registro. Sto cercando di risolvere un errore che stabilisce una connessione al database con una funzione php.

74
Tony

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 ciò 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. mysqld può essere chiamato con --verbose --help per ottenere un elenco di tutte le opzioni della riga di comando (ed ecco la parte importante/preziosa!) seguita dai valori che verrebbero utilizzati se avessi avviato mysqld invece di controllare semplicemente l'output della guida. I valori sono il risultato della tua configurazione del tempo di compilazione, my.cnf file e 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 in /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.

94
Bruno Bronosky

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 archiviati 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)")
13
kenorb

Un altro modo per trovare queste informazioni è usare lsof.

  1. Usa Activity Monitor per trovare il PID di mysql o usa ps -ef | grep mysqld per trovarlo.

  2. Sudo lsof -p PID_OF_MYSQLD e vedere quali file MySQL ha aperto.

10
tobym

Mi sono preso un po 'di tempo per trovare questo ... prova questa posizione: "

Sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
6
Mark Shust

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.

3
Chealion

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 Server Fault.

0
Arjan

Per impostazione predefinita, tutti i file di registro vengono creati nella directory dei dati mysqld. Sfortunatamente, molte persone non inseriscono 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

log_error server variable in Navicat Server Monitoring Tool

Puoi anche impostare le variabili proprio lì nell'elenco.

Saluti!

0
Rob Gravelle