mysql记录用户操作_怎么利用mysql的audit审计功能记录用户操作信息 | 学步园

mysql数据库中我们如果想记录用户的操作信息,可以通过audit审计功能来来实现。该功能是被自动触发的,在文件plugin_audit.h中看到的是比较详细的定义。在audit插件中,可控制的变量包括THD以及事件。下面学步园小编来讲解下怎么利用mysql的audit审计功能记录用户操作信息?

怎么利用mysql的audit审计功能记录用户操作信息

其中事件分为两种结构体,可以进行强制转换:

第一种:

structmysql_event_general{unsignedintevent_subclass;intgeneral_error_code;unsignedlonggeneral_thread_id;constchar*general_user;unsignedintgeneral_user_length;constchar*general_command;unsignedintgeneral_command_length;constchar*general_query;unsignedintgeneral_query_length;structcharset_info_st*general_charset;unsignedlonglonggeneral_time;unsignedlonglonggeneral_rows;};

触发条件:

#defineMYSQL_AUDIT_GENERAL_LOG0:在提交给generalquerylog之前被触发。

#defineMYSQL_AUDIT_GENERAL_ERROR1:在发送给用户错误之前触发。

#defineMYSQL_AUDIT_GENERAL_RESULT2:当将结果集合发送给用户后触发。

#defineMYSQL_AUDIT_GENERAL_STATUS3:当发送一个结果集或发生错误时被触发。

第二种:

structmysql_event_connection{unsignedintevent_subclass;intstatus;unsignedlongthread_id;constchar*user;unsignedintuser_length;constchar*priv_user;unsignedintpriv_user_length;constchar*external_user;unsignedintexternal_user_length;constchar*proxy_user;unsignedintproxy_user_length;constchar*host;unsignedinthost_length;constchar*ip;unsignedintip_length;constchar*database;unsignedintdatabase_length;};

触发条件:

#defineMYSQL_AUDIT_CONNECTION_CONNECT0:完成认证后触发。

#defineMYSQL_AUDIT_CONNECTION_DISCONNECT1:连接被中断时触发。

#defineMYSQL_AUDIT_CONNECTION_CHANGE_USER2:在执行COM_CHANGE_USER命令后触发。

从上面的分析,我们可以看出,在event中存储了相当丰富的信息,将notify函数进行了如下简单的修改:

staticvoidaudit_null_notify(MYSQL_THDthd__attribute__((unused)),unsignedintevent_class,constvoid*event){conststructmysql_event_general*pEvent;if(log_fp==NULL)log_fp=fopen("/tmp/rec.log","a");number_of_calls++;if(event_class==MYSQL_AUDIT_GENERAL_CLASS&&log_fp!=NULL){pEvent=(conststructmysql_event_general*)event;if(pEvent->event_subclass==MYSQL_AUDIT_GENERAL_RESULT&&pEvent->general_query!=NULL&&*(pEvent->general_query)!='\0'){//fprintf(log_fp,"user:%s,host:%s,command:%s\n",&thd->security_ctx->priv_user[0],//(char*)thd->security_ctx->host_or_ip,//pEvent->general_query);time_tcur=time(NULL);fprintf(log_fp,"%s%s\n%s\n",ctime(&cur),pEvent->general_user,pEvent->general_query);fflush(log_fp);}}}

以上就是关于“怎么利用mysql的audit审计功能记录用户操作信息”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值