[MySQL FAQ]系列 -- 如何利用触发器实现账户权限审计
一个简单的例子:
delimiter | create trigger before_insert_a before insert on a for each row begin if USER() != 'root@localhost' then insert into log values(user()); end if; end; |
这里不能用 current_user() 代替 user(),因为 current_user() 取得的是创建该trigger的账户。
上面只是个简单的例子,可以通过查询mysql.user, mysql.db 等表来做更详细的权限验证判断。
需要注意的是:启用触发器后会带来系统性能上的下降,需要有个权衡。
评论
cybersingle
周四, 2008/03/06 - 16:45
Permalink
触发器到确实是个很
触发器到确实是个很方便的工具,尤其是来进行数据验证和补充的时候 oracle的时候用的特爽
但是mysql没实际运用经验 还需要仔细琢磨一下
尤其是性能和一致性上
yejr
周四, 2008/03/06 - 21:36
Permalink
我用触发器实现2个表
我用触发器实现2个表的简单同步,目前还没出现一致性/稳定性方面的问题;性能方面影响也不是太大,不过这个取决于要更新的数据量大小。
MySQL方案、培训、支持
MySQL 用户组
游客 (未验证)
周四, 2009/04/16 - 17:24
Permalink
" before insert on a
" before insert on a "
是指表a吗?
那如果不insert表a呢?能记录吗?
yejr
周五, 2009/04/17 - 15:41
Permalink
欢迎测试一下再来回
欢迎测试一下再来回复自己的帖子 :)
MySQL方案、培训、支持