Как просмотреть файлы журналов в MySQL?

Я читал, что сервер Mysql создает файл журнала, в котором хранится запись всех действий - например, когда и какие запросы выполняются.

Может ли кто-нибудь сказать мне, где он существует в моей системе? Как я могу его прочитать?

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

Я думаю, что этот журнал должен быть защищен каким-то образом, потому что конфиденциальная информация, такая как имена пользователей и пароль, может быть зарегистрирована [если какой-либо запрос требует этого]; так может ли он быть обеспечен, его нелегко увидеть?

У меня есть root-доступ к системе, как я могу просмотреть журнал?

Когда я пытаюсь открыть /var/log/mysql.log, он пуст.

Это мой конфигурационный файл:

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
log = /var/log/mysql/mysql.log 
binlog-do-db=zero



user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking

bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Ответ 1

Вот простой способ включить их. В mysql нам нужно часто видеть 3 журнала, которые в основном необходимы при любой разработке проекта.

  • The Error Log. Он содержит информацию об ошибках, которые происходят во время сервер запускается (также запуск и остановка сервера)

  • The General Query Log. Это общая запись того, что такое mysqld (подключение, отключение, запросы)

  • The Slow Query Log. Ιt состоит из "медленных" операторов SQL (as указанный по его названию).

По умолчанию в MYSQL не включены файлы журналов. Все ошибки будут отображаться в syslog. (/Var/log/syslog)

Чтобы включить их, просто выполните следующие шаги.

step1: Перейти к этому файлу (/etc/mysql/conf.d/mysqld_safe_syslog.cnf) и удалить или прокомментировать эту строку.

step2: Перейдите в файл mysql conf (/etc/mysql/my.cnf) и добавьте следующие строки

Чтобы включить журнал ошибок, добавьте следующий

[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log

[mysqld]
log_error=/var/log/mysql/mysql_error.log

Чтобы включить общий журнал запросов, добавьте следующий

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Чтобы включить медленный журнал запросов, добавьте следующий

log_slow_queries       = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

step3: сохраните файл и перезапустите mysql, используя следующие команды

service mysql restart

Чтобы включить журналы во время выполнения, войдите в mysql-клиент (mysql -u root -p) и дайте:

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

Наконец, одна вещь, которую я хотел бы упомянуть здесь, - Я прочитал это из блога. Благодарю. Это работает для меня.

Нажмите здесь, чтобы посетить блог

Ответ 2

Вам нужно активировать ведение журнала запросов в mysql.

1.edit/etc/my.cnf

[mysqld]
log=/tmp/mysql.log

2. перезагрузите компьютер или службу mysqld

service mysqld restart

3.open phpmyadmin/любое приложение, которое использует консоль mysql/mysql и запускает запрос

4.cat/tmp/mysql.log(вы должны увидеть запрос)

Ответ 3

Журналы MySQL определяются глобальными переменными, такими как:

  • 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 -e "SELECT @@GLOBAL.log_error"

Чтобы прочитать содержимое файла журнала ошибок в режиме реального времени, запустите:

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

Примечание: Нажмите Control - C, когда закончите

Когда общий журнал включен, попробуйте:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

Чтобы использовать mysql с доступом к паролю, добавьте параметр -p или -pMYPASS. Чтобы сохранить его, вы можете настроить его в ~/.my.cnf, например

[client]
user=root
password=root

Так что это будет запомнено в следующий раз.

Ответ 4

В моем (у меня установлен LAMP) файл /etc/ mysql/my.cnf я нашел следующие, прокомментированные строки в разделе [mysqld]:

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Мне пришлось открыть этот файл как суперпользователя, с терминалом:

sudo geany /etc/mysql/my.cnf

(Я предпочитаю использовать Geany вместо gedit или VI, это не имеет значения)

Я просто раскоментировал их и сохранил файл, а затем restatt mysql с помощью

sudo service mysql restart

Запустите несколько запросов, откройте файл выше (/var/log/mysql/mysql.log), и журнал был там:)

Ответ 5

Из справочного руководства MySQL:

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

Проверьте папку /var/lib/mysql.

Ответ 6

Чтобы дополнить loyola, стоит упомянуть, что с MySQL 5.1 log_slow_queries устарел и заменен на slow-query-log

Использование log_slow_queries приведет к сбою service mysql restart или service mysql start

Ответ 7

shell> mysqladmin flush-logs


shell> mv host_name.err-old backup-directory

Ответ 8

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

mysqld --general-log --general-log-file=/var/log/mysql.general.log

Подтверждая другие ответы выше, mysqld --help --verbose дает вам значения из файла conf (поэтому запуск с параметрами командной строки general-log равен FALSE); тогда как mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log дает:

general_log     ON
general_log_file        /var/log/mysql.general.log

Используйте немного более компактный синтаксис для журнала ошибок:

mysqld --general-log --general-log-file=/var/log/mysql.general.log --log-error=/var/log/mysql.error.log