技术解析

mysql 开启审计功能( linux 版本)
0
2021-07-12 02:55:12
idczone

创建一个用于存放连接日记的数据和表.

creat database accesslog;
CREATE TABLE accesslog.accesslog(idint(11)primary key auto_increment,timetimestamp,localnamevarchar(30),matchnamevarchar(30));
创建用户权限.
grant select on accesslog.* to root;
注意用户必须对accesslog表具有insert权限.
grant select on accesslog.* to [email protected]'%';
退出数据库或者重新开一个命令界面

vi /etc /init.d /mysqld

注:在[mysqld]下添加以下这段话.

init-connect='insertinto accesslog.accesslog(id,time,localname,matchname)values(connection_id(),now(),user(),current_user());'

保存退出回到数据库.
select*from accesslog.accesslog where id= ;
show processlist;


1. init-connect 在短连接场景下是个巨坑
2. accesslog 表如果是 MyISAM 引擎也是个坑, 可以参考 MyISAM 引擎行数限制以及机器文件大小限制
3. 这玩意对有 super 权限的账号无效
4. 开了这玩意, accesslog 出现任何问题, 都会导致无 super 权限账号无法连接
5. 留着 root 这么个账号, 还开连接审计有点多此一举, 即使 root 账号有密码

另外再补充点
开这个东西, 一般都是做行为审计分析, 要结合 mysql 的 slow query log 和 binary log
依稀记得 mysql 的 slow query log 默认是没有 connect id 这个东西的, 新版本 mysql 有没有改不确认了. 如果没有就需要自己 patch 代码
同样 binary log 也需要 connect id, 这个我记得好像是有的

是的。这种方法最多也就自己用来玩玩。想要真正打开需要准备许多东西。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服