我们需要记录用户在PHP项目中执行的SQL查询-查询和php用户ID。我们关心INSERT,UPDATE和DELETE。
我了解MySQL常规日志,但是由于性能低下,系统管理员不建议这样做。
第二个选项是在PHP级别记录日志,但是当有人使用相同的mysql登录名访问另一个项目的访问数据库时,就会出现问题。或从PhpMyAdmin。因此,这些更改将无法跟踪。
第三个选项(可能是最好的)是MySQL触发器。但是有问题-我不知道如何传递PHP用户ID来触发登录。
我尝试通过以下方式设置触发器:
记录完整查询:根据get-full-mysql-query-string-on-insert-or-update,我能够从INFORMATION_SCHEMA执行完整查询。
登录用户ID:我尝试使用MySQL变量传递用户ID。就像我必须在执行每个查询之前调用SET @phpUserId = 123;
。然后触发器成功获取变量@phpUserId。但是我对pass-php-variable-to-mysql-trigger-nette中描述的MySQL变量有疑问。
TL; DR: 有没有办法使用php中的用户ID有效和性能友好地执行日志查询。