Аудит Mysql Queries - PullRequest
       68

Аудит Mysql Queries

0 голосов
/ 12 октября 2018

Я хотел бы включить аудит 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.

...