Де мій журнал 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щоб отримати список усіх параметрів командного рядка (і ось важлива / цінна частина!) З наступними значеннями, які будуть використані, якщо ви запускали mysqld замість того, щоб просто перевірити вихідну інформацію. Ці значення є результатом конфігурації часу компіляції, 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)")

10

Ще один спосіб знайти цю інформацію - це використовувати lsof.

  1. Використовуйте Монітор активності, щоб знайти PID mysqlабо використовувати ps -ef | grep mysqldйого.

  2. sudo lsof -p PID_OF_MYSQLD і подивіться, які файли MySQL відкрив.


6

Знайшов час, щоб знайти це ... спробуйте це місце: '

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err

3
Шахта була в/usr/local/var/mysql/<USERNAME>.local.err
jonnysamps

3

За замовчуванням усі файли журналу створюються в каталозі даних mysqld.

Джерело: Документація MySQL

Ви можете використовувати mysqlbinlogдля читання бінарних файлів журналу в / usr / local / mysql / data / (у моїй установці не всі були двійковими). Деякі помилки просто спрямовані на stderr, тому ви можете також перевірити /var/log/system.log.


у мене немає каталогу даних у режимі mysql. я переглянув весь каталог / usr / local / mysql / і не можу знайти журнал. немає способу перегляду конфігурації mysql? як phpinfo ()
Тоні

Як ви встановили MySQL? Попередньо встановлений MySQL з сервером Mac OS X, 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 in / usr / local / mysql
Тоні

0

За замовчуванням усі файли журналу створюються в каталозі даних mysqld. На жаль, багато людей не розміщують свої файли журналів (та програми) у своїх типових місцях. Я одна з них!

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

змінна сервер log_error в інструменті моніторингу Navicat Server

змінна сервер log_error в інструменті моніторингу Navicat Server

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

Ура!


-2

/Library/Logs/MySQL.log


я бачу там інші журнали, але не mysql
Тоні,

Яка версія Mac OS X Server це? Загалом, ви хочете заглянути в / var / log / & / Library / Logs / під Mac OS X Server. Більш специфічні для цього питання, дивіться /var/log/system.log, можливо, в / var / mysql (як файли журналу .err) може бути щось корисне, але я (у конфігурації Leopard Server за замовчуванням) також має вищезгадане / Бібліотека / Журнали / MySQL.log. Ви намагаєтесь підключитися через сокет або мережеве з'єднання? Якщо останнє, ви "Увімкнути мережеві з'єднання" на сервері адміністратора (на Leopard; У Тигра це був окремий додаток в / Програми / Утиліти)?
моргантний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.