特定の期間内にデータベースに対して実行されたすべてのコマンドを見つけることは可能ですか?たとえば、過去24時間に誰がデータベーステーブルにinsertコマンドを実行したのかを知りたいと思います。特定の期間内にMySQLデータベースで実行されたすべてのコマンドを調べるにはどうすればよいですか?
ご協力いただければ幸いです。
ありがとうございました。
特定の期間内にデータベースに対して実行されたすべてのコマンドを見つけることは可能ですか?たとえば、過去24時間に誰がデータベーステーブルにinsertコマンドを実行したのかを知りたいと思います。特定の期間内にMySQLデータベースで実行されたすべてのコマンドを調べるにはどうすればよいですか?
ご協力いただければ幸いです。
ありがとうございました。
http://dev.mysql.com/doc/refman/5.0/en/binary-log.html バイナリログが少し役立つかもしれません。
データを変更するクエリの場合は、バイナリログを確認できます。しかし、私はこれがあなたにユーザーを得るでしょうとは思わない:
$ 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
…
ユーザーを取得するには、テーブル上のトリガを設定し、別のテーブルに監査ログを保存するために、これらのトリガを使用する必要があります。
すべてのクエリを選択する必要がある場合は、general query logもありますが、パフォーマンスの影響とディスク要件のために通常はオンになっていません。