我正在尝试在数据库中的给定表中创建更改日志。为此,我将获取有关原始表中所有字段的信息,并使用函数创建一个新表。
除了原始表中的字段外,新表还应包含更改时间、更改类型(插入、删除、更新)和进行更改的用户的标识。
我已经想通了从哪里可以得到MySQL中原始表(表INFORMATION_SCHEMA.Columns)的列的信息,但是我不知道从哪里可以找到与用户相关的信息。
谁能指出我正确的方向?
我正在尝试在数据库中的给定表中创建更改日志。为此,我将获取有关原始表中所有字段的信息,并使用函数创建一个新表。
除了原始表中的字段外,新表还应包含更改时间、更改类型(插入、删除、更新)和进行更改的用户的标识。
我已经想通了从哪里可以得到MySQL中原始表(表INFORMATION_SCHEMA.Columns)的列的信息,但是我不知道从哪里可以找到与用户相关的信息。
谁能指出我正确的方向?
正确的方向是使用审计日志插件。那里有一些选择。请查看以下帖子以获取更多信息
http://www.mysqlperformanceblog.com/2014/05/20/database-auditing-alternatives-mysql/
我个人的偏好是 Percona Audit Plugin,但您应该为此使用 Percona Server(MySQL Alternative)。
如果你想避免玩插件,我有适合你的东西。
您应该将通用日志启用为 MySQL 表,因为它记录了以下内容:
第 2 列
user_host
包含发出命令的用户和主机。一般日志表的其余部分为您提供
您可能会发现 CSV 存储引擎对于实时日志来说很烦人。您可以将其转换为 MyISAM。然后,您可以索引
event_time
. 作为一种选择,您也可以创建前缀索引user_host
。与其重新发明轮子,我不会将实施细节放在这篇文章中,因为我已经写过关于如何去做的文章:
Jun 30, 2011
:如何将 MySQL 日志输出到 syslog?Jan 08, 2012
:如何开启MySQL通用日志?Feb 11, 2012
: MySQL 通用日志Apr 04, 2013
:使用 MySQL 中的通用日志捕获的查询对 MySQL 进行压力测试Jun 23, 2013
:实时分析MySQL General Query Log?Apr 28, 2014
: MySQL (在 Windows 上) 通用日志太大而无法正确轮换?试试看 !!!