Как включить ведение журнала MySQL?

36

Я использую MySQL 5.0.45 в OS X 10.6.1 и не могу заставить MySQL что-либо регистрировать. Я отлаживаю приложение и мне нужно увидеть все запросы и ошибки.

Я добавил в etc / my.cnf:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

Я использовал sudo для создания двух файлов журнала, установил разрешения на 644, а затем перезапустил MySQL.

Я сослался на Где мой лог MySQL на OS X? для устранения неполадок.

Бег:

ps auxww|grep [m]ysqld

Возвращает:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

И работает:

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

Возвращает:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.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

Бег:

mysql> show variables like '%log%';

Возвращает:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

Любая помощь о том, как я могу получить MySQL для входа?

RyOnLife
источник

Ответы:

23

Даже если вы использовали chmod 644, убедитесь, что MySQL является владельцем журналов.

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

Далее перезапустите mysqld.

Затем войдите в MySQL и запустите:

mysql> show variables like '%log%';

Посмотрите на значениях general_log, general_log_file, log, log_errorи т.д.

Включите их при необходимости и запустите mysqladmin flushlogs при необходимости.

randomx
источник
Теперь регистрируюсь. Должно быть, был надзор за собственностью. Хотя, см. Мой отредактированный вопрос о результатах запроса «показать переменные, такие как«% log% »». MySQL регистрируется в /var/log/mysql.log, так почему он не отображается?
RyOnLife
13

Чтобы включить файлы журнала, вам нужно убедиться, что одна или несколько из следующих директив находятся в [mysqld]разделе основного файла конфигурации вашего сервера mysql (у /etc/my.cnfменя):

[mysqld]
log-bin
log
log-error
log-slow-queries

Журналы будут создаваться по умолчанию в том же каталоге данных, в котором хранятся сами подкаталоги базы данных (обычно /var/lib/mysql), а имена файлов журналов по умолчанию соответствуют имени хоста, за которым следует суффикс, который соответствует указанным выше именам директив (например, -bin, -slow). -запросы и т. д.).

Чтобы сохранить ваши журналы по другому пути или использовать разные имена файлов, укажите базовое имя, следующее за log=директивой, и любой путь и имя файла, которые вам нравятся, например:

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

Вам нужно перезапустить mysqld, чтобы эти изменения вступили в силу.

гигаватт
источник
5

Предыдущие ответы были устаревшими. Вы можете посмотреть файл конфигурации в /etc/my.cnfили на окнах ./mysql/my.ini.

В [mysqld]разделе добавить

log_bin
general_log
log_error

В документации для Windows указано, что журналы хранятся в ProgramData/MySQL/MySQL Server 5.6/. Игнорируйте это, потому что это ложь.

Кроме того, рекомендуемый logпараметр устарел и приводит к ошибке

ambiguous option '--log' (log-bin, log_slave_updates)

вход в систему ./mysql/data/host.errи демон молча умирает. Правильная настройка есть general-log.

Также log-slow-queriesне действителен и вызвал ошибку

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

Так что будьте уверены, чтобы держаться подальше от этого тоже.

user3338098
источник
Спасибо! Я не мог запустить сервер с log=опцией и мог на всю жизнь понять, почему. Наконец-то кто-то с ответом. general-log
Jiveturkey
2

Введите командную строку mysql с супер привилегиями и выполните:

SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

В моем случае это не имело значения, если бы я уже установил эту переменную с тем же значением! Кроме того, я изменил разрешения и владельца файла, как указано в других сообщениях.

Lucia
источник
1

Попробуйте разные настройки журнала в my.cnf. В моем случае мне понадобилось:

general_log = on

general_log_file=/var/log/mysql/mysql.log
луч
источник