mysql實現訪問審計

mysql的鏈接首先都是經過init_connect初始化,而後鏈接到實例。mysql

咱們利用這一點,經過在init_connect的時候記錄下用戶的thread_id,用戶名和用戶地址實現db的訪問審計功能。sql

  • 首先咱們先建立審計用的庫表

  爲了避免與業務的庫衝突,單首創建本身的庫:線程

  create database db_monitor;日誌

  use db_monitor;索引

  create table monitor (ip

    thread_id int(11) default null,      #線程idit

    log_time  datetime  default null,  #登陸時間io

    localname  varchar(64)  default null,     #登陸名稱,帶詳細iptable

    login_user  varchar(32)  default null,     #登陸用戶thread

    key  idx_log_time(log_time)                   #創建索引字段

  )engine=InnoDB  default charset=utf8;

 

  •   執行init_connect須要的sql

  這個參數是能夠動態調整的,也注意要加到配置文件my.cnf中,不然下次重啓就失效了;

  mysql>  show variables like 'init_connect%';

       mysql> init_connect='insert into db_monitor.monitor(thread_id,log_time,localname,login_user) values(connection_id(),now(),user(),current_user());'

 

  •   授予普通用戶對monitor表的insert權限

  該點很重要

  該參數只對普通用戶生效,有super權限的都不會有做用。

  若是是普通用戶,增長了該功能後,必定要受權:

  grant insert on db_monitor.monitor to user@'%';

  •   驗證審計功能

  經過binlog日誌查看分析

相關文章
相關標籤/搜索