Где мой лог MySQL на OS X?

74

Я проверил / var / log и / usr / local / mysql и не могу найти журнал. Я пытаюсь устранить ошибку при установлении соединения с базой данных с помощью функции php.

Тони
источник

Ответы:

95

Как упоминал Chealion, существует несколько способов установки вашего mysql. Каждый из них будет помещать ваши данные в каталог и / или журналы в разных местах. Следующая команда даст вам (и нам) хорошее представление о том, где искать.

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

Можете ли вы опубликовать результат этой команды здесь, пожалуйста? Моя выглядит так:

_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

Из этого вы можете видеть, что мой datadir /opt/local/var/db/mysql(потому что я установил через MacPorts). Давайте возьмем этот урок немного дальше ...

С первой строки вы можете увидеть мой демон /opt/local/libexec/mysqld. mysqldМожно назвать с , --verbose --helpчтобы получить список всех параметров командной строки (и здесь важной / ценная часть!) Следует значения , которые будут использоваться , если вы запускали туздЫ вместо того , чтобы просто проверить вывод справки. Значения являются результатом вашей конфигурации времени компиляции, my.cnfфайла и любых параметров командной строки. Я могу использовать эту функцию, чтобы точно узнать, где находятся мои файлы журналов, например:

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

Моя выглядит так:

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

И ВОТ! весь совет в мире не собирался помогать мне, потому что мой файл журнала хранится в совершенно нестандартном месте! Я держу мой, /tmp/потому что на моем ноутбуке, мне все равно (на самом деле я предпочитаю) потерять все мои журналы при перезагрузке.

Давайте соберем все воедино и сделаем вас единомышленником:

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

Выполните эту одну команду, и вы получите список всех журналов для вашего запущенного экземпляра mysql.

Наслаждайтесь!

Этот Bash-Fu принес вам бесплатно благодаря моей приверженности всем вещам с открытым исходным кодом.

Бруно Броноски
источник
2
mysqladmin variablesтеперь предпочтительная команда для получения текущего значения вместо непосредственного использованияmysqld
Джон Каммингс
@JohnCummings, источник?
Pacerier
Сегодня я получил отрицательный голос без комментариев. Я поддерживаю все мои ответы. Даже те, кому 10 лет. Ты никому не помогаешь путем голосования. Оставить комментарий!
Бруно Броноски
@ JM3 хотите уточнить? У меня больше нет доступа к MacOS.
Бруно Броноски
12

Существует 3 типа журналов MySQL / MariaDB:

  • log_error для журнала сообщений об ошибках;
  • general_log_fileдля общего файла журнала запросов (если включено general_log);
  • slow_query_log_fileдля файла журнала медленных запросов (если включен slow_query_log);

Проверьте настройки и расположение вышеперечисленных журналов с помощью этой команды оболочки:

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

По умолчанию журналы хранятся в вашем каталоге данных, поэтому проверьте местоположение с помощью этой команды оболочки:

mysql -se "SELECT @@datadir"

Для просмотра журнала ошибок вы можете запустить:

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

Если у вас включен общий журнал, для его просмотра выполните:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
kenorb
источник
10

Другой способ найти эту информацию - использовать lsof.

  1. Используйте Activity Monitor, чтобы найти PID mysqlили используйте его, ps -ef | grep mysqldчтобы найти.

  2. sudo lsof -p PID_OF_MYSQLD и посмотрите, какие файлы у MySQL открыты.

tobym
источник
6

Мне понадобилось время, чтобы найти это ... попробуйте это место:

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
Марк Шуст
источник
3
Мой был в/usr/local/var/mysql/<USERNAME>.local.err
jonnysamps
3

По умолчанию все файлы журнала создаются в каталоге данных mysqld.

Источник: MySQL Documentation

Вы можете использовать mysqlbinlogдля чтения двоичных файлов журнала в / usr / local / mysql / data / (в моей установке не все были двоичными). Некоторые ошибки просто направлены на stderr, так что вы можете проверить /var/log/system.logэто.

Chealion
источник
у меня нет каталога данных в директории mysql. Я просмотрел каталог / usr / local / mysql / и не могу найти журнал. нет способа просмотреть конфигурацию mysql? как phpinfo ()
Тони
Как вы установили MySQL? Предустановленный MySQL с Mac OS X Server, MacPorts или официальный пакет MySQL?
Chealion
0

Папка с этим журналом может быть недоступна без использования sudo:

sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x---   4 _mysql  wheel    136 Jul 10 23:06 data

Если вам случится найти большой файл журнала, и когда вы используете Time Machine, вы можете прочитать, что делает Time Machine? Ошибка сервера.

Арьян
источник
у меня нет данных dir в / usr / local / mysql
Тони
0

По умолчанию все файлы журнала создаются в каталоге данных mysqld. К сожалению, многие люди не размещают свои файлы журналов (и программы) в своих типичных местах. Я один из них!

Я сам прошел через эту процедуру с MySQL, пока не попробовал Navicat для MySQL . Позже я обновился до Navicat Premium . Оба имеют инструмент мониторинга, который содержит вкладку со всеми серверными переменными в одном полном списке. Вот скриншот с серверной переменной log_error:

переменная сервера log_error в инструменте мониторинга сервера Navicat

переменная сервера log_error в инструменте мониторинга сервера Navicat

Вы также можете установить переменные прямо в списке.

Ура!

Роб Гравелль
источник
-2

/Library/Logs/MySQL.log

morgant
источник
я вижу другие журналы там, но не mysql
Тони
Какая версия Mac OS X Server это? В общем, вы захотите посмотреть в / var / log / & / Library / Logs / под Mac OS X Server. Более конкретно для этой проблемы, смотрите /var/log/system.log, в / var / mysql может быть что-то полезное (например, файлы журнала .err), но у меня (в конфигурации по умолчанию для Leopard Server) также есть вышеупомянутый / Библиотека / Журналы / MySQL.log. Вы пытаетесь подключиться через сокет или сетевое соединение? Если последнее, вы «Разрешите сетевые подключения» в Server Admin (на Leopard; в Tiger это было отдельное приложение в / Applications / Utilities)?
Моргант