Обнаружение прямых изменений в MySQL через - PullRequest
1 голос
/ 01 июля 2011

У меня есть приложение PHP, которое общается с Mysql. Приложение подключается к MySQL, используя имя пользователя и пароль. Любой, кто вносит изменения в базу данных MySQL через приложение, может зарегистрировать свое имя пользователя, и это может быть впоследствии проверено. Однако иногда нам нужно выполнять некоторые операции из бэкэнда, то есть непосредственно в базу данных. Что я хочу знать, так это то, что можно регистрировать информацию о пользователях, которые входят в БД напрямую (возможно, с помощью phpMyAdmin) и вносят изменения в конкретные таблицы, и как эту информацию можно просмотреть позже? Кроме того, возможно ли, что если изменения вносятся в конкретные таблицы непосредственно через бэкэнд, то запускаются некоторые триггеры, где было, если те же самые изменения вносятся из внешнего интерфейса, то есть с использованием приложения PHP, то эти триггеры не запускаются? 1001 *

-Спасибо заранее

Ответы [ 4 ]

1 голос
/ 01 июля 2011
  1. да, вы можете регистрировать изменения, внесенные в базу данных, установив множество триггеров для таблиц, которые нужно отслеживать.Вы можете использовать функцию USER () MySql для получения текущего имени пользователя.
  2. используя уже упомянутую функцию USER (), вы можете определить, нужно ли регистрировать активность или нет (я предполагаю, что вы используете разных пользователей в ваших php-скриптах и ​​в вашем phpMyAdmin)
0 голосов
/ 01 июля 2011

Вам будет намного лучше, если у вас будет только один механизм аудита, и он будет находиться как можно ближе к базе данных.

Как таковой, используйте триггеры для всего.

Попросите ваше приложение установить переменную сеанса, скажем, @APP_USER = "kabir". Настройте триггеры (вставка / обновление / удаление), чтобы использовать @APP_USER, если он существует, и использовать функцию USER () MySQL, как предложил Сергей.

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

Удачи.

0 голосов
/ 01 июля 2011

настроить другой стол

query_log

ql_id id user_id fk запросить небольшой текст дата дата время

вставить в query_log set user_id = 'user_id', query = 'query', date = 'date'

0 голосов
/ 01 июля 2011

Ваш сервер MySQL должен быть настроен для сохранения журналов.Более подробная информация здесь: Журналы MySQL Server .

Я верю, что это поможет вам.

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