Как я могу регистрировать MySQL запросы? - PullRequest
2 голосов
/ 13 января 2011

Можно ли зарегистрировать все выполненные запросы? Я смотрю на базу данных, доступ к которой осуществляется многими различными приложениями. Одним из них является изменение значения таблицы так, как не следует. Я пытаюсь выяснить, какое приложение является виновником. Мне бы очень помогло, если бы я мог захватить все запросы, которые выполняются в этой таблице и в какое время.

Заранее большое спасибо за помощь.

Ответы [ 6 ]

1 голос
/ 13 января 2011

Либо используйте ключ командной строки --log[=file_name] на mysqld, либо отредактируйте / создайте my.cnf, содержащий:

[mysqld]
log=/tmp/mysql.log

Полностью объяснено в этой статье .

0 голосов
/ 13 января 2011

Посмотрите здесь: http://dev.mysql.com/doc/refman/5.1/en/server-logs.html Вы ищете общий журнал запросов: http://dev.mysql.com/doc/refman/5.1/en/query-log.html

0 голосов
/ 13 января 2011

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

Если это не так, в настройках Unix / Linux я бы написал простой скрипт, который считывает строки из stdin и печатает строки с текущей отметкой времени, когда они были прочитаны, и передает tail -f на файл журнала, чтобы вы могли добавить свои собственные метки времени.

0 голосов
/ 13 января 2011

Возможное решение вашей проблемы - использование триггера обновления для рассматриваемой таблицы. Триггер сработает при любом обновлении таблицы, и можно записать триггер таким образом, чтобы при его выполнении по определенным критериям (изменяемое значение) выполнялось действие (возможно, запись во временную таблицу, оператор SQL это делает изменения). Для получения дополнительной информации я предлагаю посмотреть Синтаксис триггера .

0 голосов
/ 13 января 2011

в вашей конфигурации .ini добавьте эту строку

log=allqueries.log

вам нужно будет перезапустить mysql

0 голосов
/ 13 января 2011

Насколько мне известно, в настоящее время в MySQL нет встроенных возможностей аудита.Регистрируйте запросы из приложений, которые их генерируют, или анализируйте соединения с сервером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...