特定の時間枠でデータベースに対して実行されたすべてのコマンドを見つけることは可能ですか? たとえば、過去 24 時間にデータベース テーブルに対して挿入コマンドを実行したユーザーを知りたいとします。
どんな助けでも大歓迎です。
ありがとう。
特定の時間枠でデータベースに対して実行されたすべてのコマンドを見つけることは可能ですか? たとえば、過去 24 時間にデータベース テーブルに対して挿入コマンドを実行したユーザーを知りたいとします。
どんな助けでも大歓迎です。
ありがとう。
データを変更するクエリについては、バイナリ ログを確認できます。ただし、これでユーザーが得られるとは思いません。
$ mysqlbinlog /var/log/mysql/mysql-bin.000145
…
# at 3178
#090805 6:25:15 server id 1 end_log_pos 3373 Query thread_id=2170317 exec_time=0 error_code=0
SET TIMESTAMP=1249467915/*!*/;
UPDATE phpbb3_topics
SET topic_views = topic_views + 1, topic_last_view_time = 1249467915
WHERE topic_id = 95847/*!*/;
# at 3373
…
ユーザーを取得するには、テーブルにトリガーを設定し、それらのトリガーを使用して監査ログを別のテーブルに保存する必要があります。
すべてのクエリ (selects を含む) が必要な場合は、一般的なクエリ ログもありますが、パフォーマンスへの影響とディスク要件のため、通常はオンになっていません。
http://dev.mysql.com/doc/refman/5.0/en/binary-log.html バイナリログが少し役立つかもしれません。