通过检测MySQL的直接变化

时间:2011-07-01 10:04:29

标签: php mysql triggers

我有一个与Mysql对话的PHP应用程序。应用程序使用用户名和密码连接到MySQL。任何通过应用程序对MySQL数据库进行更改的人都可以记录其用户名,以后可以对其进行审核。但是,有时我们需要从后端进行一些操作,即直接进入数据库。我想知道的是,可以直接记录用户登录数据库的信息(可能使用phpMyAdmin),并对特定表进行更改以及以后如何查看这些信息?此外,是否可能直接通过后端对特定表进行更改,然后触发一些触发器,如果​​从前端进行相同的更改,即使用PHP应用程序,则不触发这些触发器? / p>

- 提前谢谢

4 个答案:

答案 0 :(得分:1)

  1. 是的,您可以通过在需要跟踪的表上设置大量触发器来记录对数据库所做的更改。您可以使用MySql的USER()函数来获取当前用户名。
  2. 使用已经提到的USER()函数,您可以确定是否需要记录活动(我假设您在php脚本和phpMyAdmin中使用不同的用户)

答案 1 :(得分:0)

您的MySQL服务器必须配置为保存日志。 更多详情请点击此处:MySQL Server Logs

我相信这会对你有帮助。

答案 2 :(得分:0)

设置另一张表

query_log

ql_id id user_id fk 查询小文本 日期日期时间

插入query_log set user_id ='user_id', query ='query', date ='date'

答案 3 :(得分:0)

如果您只有一个审核机制并且它尽可能靠近数据库,那么您会好得多。

因此,使用触发器来处理所有事情。

让你的应用程序设置一个会话变量,比如@APP_USER =“kabir”。设置触发器(插入/更新/删除)以使用@APP_USER(如果存在)并按照谢尔盖建议回退到MySQL的USER()函数。

我们创建了一个小脚本,通过查看每个表的架构来生成触发器。它节省了大量时间,但您必须记住在修改架构时重新生成触发器。

祝你好运。