有没有办法记录MySQL中特定列的读/写访问权限?

时间:2013-05-21 08:17:35

标签: mysql database refactoring refactoring-databases

在MySQL中是否有任何方法可以记录访问表中某个列的任何查询?

目的: 我需要为重构目的这样做 - 我必须改变数据库的结构,但因为当时我不够聪明使用独特的可搜索列名,现在很难找到PHP代码中的所有位置在那里我处理那个专栏。因此,如果我可以开始记录随时间访问该列的所有查询,我可以完全概述哪些查询使用该列,从而能够修改我的PHP代码(假设所有可能的查询都在该时间段内运行了一段时间) )。

1 个答案:

答案 0 :(得分:0)

虽然我在下面写下了疑虑,但这个问题与“审核”和“记录”有关。

使用General Query Log可以实现基本语句日志记录,Enterprise Audit插件可以执行更高级的审核。触发器适用于记录查询,但已知实现更新/插入更改日志记录。


我认为尝试以编程方式查找用法是错误的。重构不是一个“持续”的过程 - 它只完成一次(每个重构目标)并且生命继续前进。测试(例如单元/集成)和代码覆盖可以告诉重构的结果,但通常最适合使用形式化的DAL / API。

相反,现在是坐下来使用代码库并仔细分析所有数据库访问调用的好时机。即使像id这样糟糕的列名,如果只是试图找到某些事件,也可以相对容易地浏览文件。有可能只需要一两个小时即可对手动更改“感到舒服”。现在,如果只能测试这些变化..

将所有访问权重构为具有明确定义的合同的命名方法也是谨慎的,这些合同稍后可以推送到适当的DAL,即使它们当前留在呼叫站点。这种关注点的分离是支持可测试性和未来重构的基础。