如果您既不能修改应用程序以记录您发送到 MySQL 的内容(通常是解决方案 #1),也不能启用通用查询日志(解决方案 #2,但是是的,不适用于生产) - 您可能想要使用 MySQL 代理. 看到这个:https ://github.com/mysql/mysql-proxy
MySQL Proxy 是轻量级程序,您可以将其放在客户端(PHP 脚本)和 MySQL 服务器之间。您可以在运行 MySQL 服务器本身的同一台服务器上运行 MySQL 代理,并使您的客户端直接连接到代理端口而不是 MySQL 服务器(如果您无法修改客户端,您可以将 MySQL 服务器移动到另一个端口,并设置 MySQL 代理到 MySQL 服务器以前使用的端口)。
然后,可以使用自定义脚本扩展 MySQL 代理,您的自定义脚本可以捕获各种类型的事件:新连接、发送到服务器的查询等。对于查询,您可以灵活地记录它们、阻止它们或修改查询,或者在实际发送的查询之外添加新的查询,无论如何。
坏消息 - 自定义脚本在 Lua ( http://dev.mysql.com/doc/refman/5.5/en/mysql-proxy-scripting.html )中实现。好消息——你可以找到很多用于 MySQL 代理的 Lua 脚本示例。例如这里: http: //forge.mysql.com/wiki/Lua_Scripts_For_MySQL_Proxy_Examples。特别是您可能想要检查“阻止不需要的查询”示例并根据您的需要对其进行修改(您实际上不会阻止任何内容,但会将某些查询打印到日志中)。
MySQL Proxy 增加了一些开销,但通常它非常轻量级。如果你也保持 Lua 脚本轻量级 - 它应该可以正常工作。
编辑:
该存储库最后一次更新是在 2014 年,目前,版本档案是这样说的:
MySQL Proxy 不是 GA,不推荐用于生产。
我们建议将 MySQL 路由器用于生产用途。下载 MySQL 路由器 »
遗憾的是,MySQL Router 看起来不像 MySQL Proxy 那样允许相同的功能。