0

特定の時間枠でデータベースに対して実行されたすべてのコマンドを見つけることは可能ですか? たとえば、過去 24 時間にデータベース テーブルに対して挿入コマンドを実行したユーザーを知りたいとします。

どんな助けでも大歓迎です。

ありがとう。

4

2 に答える 2

1

データを変更するクエリについては、バイナリ ログを確認できます。ただし、これでユーザーが得られるとは思いません。

$ 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 を含む) が必要な場合は、一般的なクエリ ログもありますが、パフォーマンスへの影響とディスク要件のため、通常はオンになっていません。

于 2009-08-15T22:45:54.473 に答える
0

http://dev.mysql.com/doc/refman/5.0/en/binary-log.html バイナリログが少し役立つかもしれません。

于 2009-08-15T22:36:12.293 に答える