Как просмотреть файлы журналов в 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 определяются глобальными переменными, такими как:
Чтобы просмотреть настройки и их местоположение, запустите эту команду оболочки:
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