Я хотел бы включить аудит Mysql Server как в Windows, так и в Linux.Я работаю над сбором логов с сервера MySQL для инструмента анализа логов.Итак, сначала мне нужно знать, как включить аудит всех возможных запросов, таких как ошибки, предупреждения, успехи и информация.
1) Как включить аудит в MySQL (любая версия) в Windows и Linux.
2) Как отправить журналы в syslog (Unix) и EventLog (Windows)?
Может кто-нибудь поделиться пошаговым решением для вышеуказанных вопросов?
Я добавил следующие строкив my.ini, но я мог перезапустить сервер MySQL из-за строк ниже.Если я удаляю эти строки и перезагружаюсь, сервер успешно перезагружается.
log_output="FILE"
general_log=1
general_log_file="E:\Logs\my-sql-general-log.log"
slow-query-log=1
slow_query_log_file="my-sql-slow-log.log"
long_query_time=10
Я пытался использовать только общий журнал и столкнулся с той же проблемой.Я также попробовал general_log = on и general_log = 1.Не найдено никаких изменений.
Я попробовал вышеуказанное изменение в Windows 10 с MySQL Server 5.0
РЕДАКТИРОВАТЬ 1:
Я добавил следующую строку в моем.ini
log="C:/Program Files/MySQL/MySQL Server 5.0/logs/general-log.log"
После добавления вышеуказанной строки в файл были записаны журналы запросов.Ошибки по-прежнему не записываются и не пересылаются в программу просмотра событий.
РЕДАКТИРОВАТЬ 2:
1) Я добавил следующие строки в my.ini на моем компьютере с Windows
log="C:/Program Files/MySQL/MySQL Server 5.0/logs/my-sql-general-log.log"
log_bin="C:/Program Files/MySQL/MySQL Server 5.0/logs/my-sql-bin-log.log"
log_error="C:/Program Files/MySQL/MySQL Server 5.0/logs/my-sql-error-log.log"
log_slow_queries
long_query_time = 1
В этом случае все запросы записываются в общий журнал, но ошибки не записываются в журнал ошибок.В журнале ошибок записываются только запуск / остановка журналов службы mysql.
(i) Как записать ошибки, такие как «База данных не выбрана» или «Таблица не существует», в файл журнала ошибок?
(ii) Если я добавлю log-output = TABLE в my.ini, служба mysql не будет перезапущена.Что вызывает эту проблему?Он отлично работает в Linux.
(iii) Как отправить эти журналы в EventViewer?
2) Я добавил следующие строки в my.cnf на моем компьютере с Linux
[mysqld_safe]
syslog
[mysqld]
general_log_file = /var/log/mysql/mysql.log
general_log = 1
log_error = /var/logs/mysql/error.log
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
log_bin = /var/log/mysql/mysql-bin.log
После добавления этих строк общие журналы отправляются на сервер системного журнала, но не журналы ошибок.
(i) Как записать ошибки типа «База данных не выбрана» или «Таблица не существует» в файл журнала ошибок и отправить их на сервер системного журнала?
(ii) Я также пытался log-output=TABLE
но когда журналы записываются в таблицу, они не отправляются на сервер системного журнала.Как отправить журналы на сервер системного журнала, если журналы записываются в таблицу?
Общий журнал записывается так, как показано ниже -
181017 11:46:41 1 Connect root@localhost on
1 Query set autocommit=1
1 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
1 Query SHOW SESSION VARIABLES LIKE 'lower_case_table_names'
1 Query SELECT current_user()
1 Quit
Есть ли способ сделать журналынаписано как ниже?
Time User ThreadID Command Argument
181017 11:46:41 root@localhost 1 Connect root@localhost on
181017 11:46:41 root@localhost 1 Query set autocommit=1
181017 11:46:41 root@localhost 1 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
181017 11:46:41 root@localhost 1 Query SHOW SESSION VARIABLES LIKE 'lower_case_table_names'
181017 11:46:41 root@localhost 1 Query SELECT current_user()
181017 11:46:41 root@localhost 1 Quit
РЕДАКТИРОВАТЬ 3: Мне удалось отправить все журналы в системный журнал, изменив файл rsyslog.conf, но я все еще не могу переслать общие имедленные журналы запросов в Windows EventLog.