<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      分享mysql使用init-connect增加訪問審計技巧的案例

      [摘要]下面小編就為大家帶來一篇mysql利用init-connect增加訪問審計功能的實現。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧mysql的連接首先都是要通過init-connect初始化,然后連接到實例。我們利用這一點,通過在init-connect的時候記錄下...
      下面小編就為大家帶來一篇mysql利用init-connect增加訪問審計功能的實現。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

      mysql的連接首先都是要通過init-connect初始化,然后連接到實例。

      我們利用這一點,通過在init-connect的時候記錄下用戶的thread_id,用戶名和用戶地址實現db的訪問審計功能。

      實現步驟

      1、創建審計用的庫表。

      為了不與業務的庫沖突,單獨創建自己的庫:


      #建庫表代碼
      create database db_monitor ;
      use db_monitor ;
      CREATE TABLE accesslog
      ( thread_id int(11) DEFAULT NULL,  #進程id
       log_time datetime default null,  #登錄時間
       localname varchar(50) DEFAULT NULL, #登錄名稱,帶詳細ip
       matchname varchar(50) DEFAULT NULL, #登錄用戶
       key idx_log_time(log_time)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

      2、配置init-connect參數

      這個參數是可以動態調整的,也注意要加到配置文件my.cnf中,否則下次重啟后就失效了;


      mysql> show variables like 'init_connect%';
      +---------------+-------+
        Variable_name   Value  
      +---------------+-------+
        init_connect       
      +---------------+-------+
      1 row in set (0.00 sec
      mysql> set global init_connect='insert into db_monitor.accesslog(thread_id,log_time,localname,matchname) values(connection_id(),now(),user(),current_user());';

      3、授予普通用戶對accesslog表的insert權限

      該點很重要

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

      如果是普通用戶,增加了該功能后,一定需要授權:

      grant insert on db_monitor.accesslog to user@'xx.xx.xx.%';

      不授權的后果是,連接數據庫會失。

      accesslog表沒有insert權限的用戶:


      mysql> show databases;
      ERROR 2006 (HY000): MySQL server has gone away
      No connection. Trying to reconnect...
      Connection id:  7
      Current database: *** NONE ***
      ERROR 1184 (08S01): Aborted connection 7 to db: 'unconnected' user: 'user2' host: 'localhost' (init_connect command failed)

      4、驗證審計功能

      某個用戶對test庫刪除了一張表,看我們配合binlog日志是否能追蹤到時哪個用戶:


      查看binlog:


      可以看出來是哪個用戶進行了操作,從而完成審計。

      以上就是分享mysql利用init-connect增加訪問審計功能的實例的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清