Mysqlサーバーがあります。
サーバーには、私のアプリケーションと外部監査人(mysqlワークベンチを使用している人)がアクセスします。監査人には、特定のユーザーとパスワード、および専用IPがあり、特定の権限に対してのみ付与されます。
監査人からの活動を記録する必要があります。どういうわけかそれは可能ですか?できない場合、ネットワークからのパッケージをログに記録できますか?
一般的なログを使用できます。実際、一般的なログのMySQLテーブルバージョンを使用してみてください。
これを実行すると:
SHOW CREATE TABLE mysql.general_log\G
次のようなものが表示されます。
mysql> show create table mysql.general_log\G
*************************** 1. row ***************************
Table: general_log
Create Table: CREATE TABLE `general_log` (
`event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user_Host` mediumtext NOT NULL,
`thread_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`command_type` varchar(64) NOT NULL,
`argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
1 row in set (0.14 sec)
mysql>
user_Host
列には、MySQLユーザーとコマンドの送信元のIPアドレス/ DNS名が記録されます。
「そのテーブルはCSVファイルです。解析する必要があります。」それは本当です、あなたはしなければならないでしょう。しかし、それをMyISAMテーブルに変換できることを知っていましたか?私は実際に雇用主のDBホスティングクライアントの1つについてこれを試し、それを説明する投稿を書きました(下のFeb 24, 2011
の投稿を参照)。
基本的な手順は次のとおりです。
Mysql.general_logテーブルをMyISAMにします。
以下を実行します。
CREATE TABLE mysql.general_log_original LIKE mysql.general_log;
ALTER TABLE mysql.general_log ENGINE=MyISAM;
ALTER TABLE mysql.general_log ADD INDEX (event_time);
一般ログを有効にする
以下を/etc/my.cnf
に追加します
[mysqld]
log-output=TABLE
general-log
一般ログのテキストバージョンも必要な場合は、次の行を追加します。
[mysqld]
log-output=TABLE,FILE
general-log
general-log-file=/var/log/mysql_general.log
Mysqlを再起動します
単にservice mysql restart
を実行します
MyISAMテーブルとしての一般的なログと遅いログの使用に関する多くの投稿があります。
Jan 22, 2013
: slow_logテーブルはMySQLでどのくらいの頻度で更新されますか?Nov 10, 2012
: MySQLエラーと遅いログを別のデータベースにリダイレクトJan 08, 2012
: MySQL一般ログを有効にする方法Dec 27, 2011
: MySQLユーザーアカウンティングの方法Nov 18, 2011
: MySQLでカスタムログテーブルを作成するJun 30, 2011
: MySQLログをsyslogに出力するにはどうすればよいですか?Feb 24, 2011
: MySQLデータベースでのログインの監査MySQL 5.5.28は最近 監査ログプラグインとそのインストール方法 を導入しました。
ここにオプションがあります
これらは私にとっては初めてのことなので、監査ログプラグインには現時点で賛否両論はありません。