Sprawdziłem / var / log i / usr / local / mysql i nie mogę znaleźć dziennika. Próbuję rozwiązać problem z nawiązaniem połączenia z bazą danych za pomocą funkcji php.
Jak wspomniano Chealion, istnieje kilka sposobów na zainstalowanie mysql. Każdy z nich umieści katalog danych i / lub dzienniki w różnych lokalizacjach. Poniższe polecenie da ci (i nam) dobrą wskazówkę, gdzie szukać.
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
Czy możesz tutaj opublikować wynik tego polecenia? Mój wygląda następująco:
_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
Z tego widać, że mój datadir to /opt/local/var/db/mysql
(ponieważ zainstalowałem przez MacPorts). Weźmy tę lekcję trochę dalej ...
Z pierwszego wiersza widać, że jest mój demon /opt/local/libexec/mysqld
. mysqld
Może być wywołana --verbose --help
, aby uzyskać listę wszystkich opcji wiersza poleceń (i tu jest ważny / wartościowy część!), A następnie przez wartości, które będą stosowane, jeśli zostały uruchomienie mysqld zamiast po prostu sprawdzając wyjście pomocy. Wartości są wynikiem konfiguracji czasu kompilacji, my.cnf
pliku i wszystkich opcji wiersza poleceń. Mogę wykorzystać tę funkcję DOKŁADNIE, aby dowiedzieć się, gdzie są moje pliki dziennika, na przykład:
/opt/local/libexec/mysqld --verbose --help|grep '^log'
Mój wygląda następująco:
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 AND BEHOLD! wszystkie porady na świecie mi nie pomogły, ponieważ mój plik dziennika jest przechowywany w zupełnie niestandardowej lokalizacji! Trzymam mój, /tmp/
ponieważ na moim laptopie nie dbam (właściwie wolę), aby stracić wszystkie logi przy ponownym uruchomieniu.
Złóżmy to wszystko razem i sprawmy, że będziesz oneliner:
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
Wykonaj to jedno polecenie, a otrzymasz listę wszystkich dzienników dla działającej instancji mysql.
Cieszyć się!
Ten Bash-Fu przyniósł ci za darmo poprzez moje zaangażowanie we wszystkie rzeczy Open Source.
mysqladmin variables
jest teraz preferowanym poleceniem do pobierania bieżącej wartości zamiast bezpośredniego użyciamysqld
Istnieją 3 typy dzienników MySQL / MariaDB:
log_error
dla dziennika komunikatów o błędach;general_log_file
dla ogólnego pliku dziennika zapytań (jeśli włączony przezgeneral_log
);slow_query_log_file
dla pliku dziennika powolnego zapytania (jeśli włączone przezslow_query_log
);Sprawdź ustawienia i lokalizację powyższych dzienników za pomocą tego polecenia powłoki:
Domyślnie dzienniki są przechowywane w katalogu danych, więc sprawdź lokalizację za pomocą tego polecenia powłoki:
Aby wyświetlić dziennik błędów, możesz uruchomić:
Jeśli masz włączony dziennik ogólny, aby go wyświetlić, uruchom:
źródło
Innym sposobem na znalezienie tych informacji jest użycie
lsof
.Użyj Monitora aktywności, aby znaleźć PID
mysql
, lub użyj,ps -ef | grep mysqld
aby go znaleźć.sudo lsof -p PID_OF_MYSQLD
i zobacz, które pliki MySQL ma otwarte.źródło
Zajęło mi to trochę czasu, aby to znaleźć ... wypróbuj tę lokalizację: '
źródło
/usr/local/var/mysql/<USERNAME>.local.err
Źródło: Dokumentacja MySQL
Możesz użyć
mysqlbinlog
do odczytu binarnych plików dziennika w / usr / local / mysql / data / (w mojej instalacji nie wszystkie były binarne). Niektóre błędy są po prostu kierowane do stderr, więc możesz również chcieć to sprawdzić/var/log/system.log
.źródło
Folder zawierający ten dziennik może być niedostępny dla Ciebie bez użycia
sudo
:Jeśli zdarzy ci się znaleźć duży plik dziennika i podczas korzystania z Time Machine, możesz przeczytać Co robi Time Machine? na błąd serwera.
źródło
Domyślnie wszystkie pliki dziennika są tworzone w katalogu danych mysqld. Niestety wiele osób nie umieszcza plików dziennika (i programów) w typowych lokalizacjach. Jestem jednym z nich!
Sam przeszedłem tę procedurę z MySQL, dopóki nie wypróbowałem Navicat dla MySQL . Później zaktualizowałem do Navicat Premium . Oba mają narzędzie do monitorowania, które zawiera kartę ze wszystkimi zmiennymi serwera na jednej obszernej liście. Oto zrzut ekranu ze zmienną serwera log_error:
log_error zmienna serwera w Navicat Server Monitoring Tool
Możesz także ustawić zmienne bezpośrednio na liście.
Twoje zdrowie!
źródło
/Library/Logs/MySQL.log
źródło