亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql8中的無插件方式審計

 更新時間:2023年12月25日 10:17:59   作者:endzhi  
這篇文章主要介紹了Mysql8中的無插件方式審計,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

需求

在mysql 8中記錄用戶對數據庫表的操作內容,操作時間,客戶端源ip地址。

在mysql5.7完美地采用MariaDB的server_audit插件來記錄{時間,節(jié)點,用戶,源IP,事件類型,庫,語句,影響行數}等審計,但從mysql8開始已不支持該插件,同類的第三方插件也無法使用。

目前找到的方式:

[ binlog + init-connect ],binlog可以審計到所有數據記錄及表結構變更相關的記錄,但,不記錄連接的信息,要通過額外的手段來記錄,比如show full processlist;

是可得出連接信息中的process id,與binlog中的thread id進行關聯(lián)分析,得到連接的信息{用戶名、登錄時間、源ip},為了永久記錄process id,采用init-connect 方式記錄到數據庫表中。

1. 創(chuàng)建init-connect用于記錄的庫和表

       mysql>   create database mysql_access_log;
       mysql>   create table mysql_access_log.access_log ( conn_id int(11) default null, `time` timestamp, `localname` varchar(30), `matchname` varchar(30));

2. 授權用戶于該庫的表mysql_access_log.accesslog有insert權限

如用戶user_web

mysql>   grant insert on `mysql_access_log`.`access_log` to 'user_web'@'%';

3. 配置用戶登錄日志插入表

my.cnf中 [mysqld] 下添加,并重啟mysql生效

init-connect='insert into mysql_access_log.access_log values(connection_id(),now(),user(),current_user());'

4. 特別注意

①init-connect只記錄非super權限用戶,所以好好管理用戶,按情況回收super權限;

②非super權限用戶登錄都受init-connect影響,未授權對mysql_access_log.access_log有insert權限的用戶即無法登錄成功!

③當重啟mysql后connection_id會存在不按歷史續(xù)增長而重復出現,所以查記錄時注意多個重復的id記錄。

5. 開啟mysql-binlog日志記錄

my.cnf [mysqld] 下添加,并重啟mysql生效

# 二進制日志
log-bin=mysql-bin
# binlog-do-db=db  #僅作用的庫
expire_logs_days = 20
max_binlog_size = 300m

6. 從binlogi日志 取thread_id去查用戶名和源ip

模擬刪除book庫books表中的一條記錄-----過程省略!

解密mysql-bin查看內容,找到DELETE操作的thread_id號,如這里的8。

[root@localhost data]# mysqlbinlog  --base64-output=decode-row -vv  mysql-bin.000003  > ./mysql-bin.000003--vv.log  
 
[root@localhost data]# tail -n  30   ./mysql-bin.000003--vv.log
#200712 18:24:01 server id 1  end_log_pos 1008 CRC32 0x62294de5    Query   thread_id=8     exec_time=0   error_code=0
SET TIMESTAMP=1594549441/*!*/;
SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=255/*!*/;
#200712 18:24:01 server id 1  end_log_pos 1079 CRC32 0x0723c708         Table_map: `book`.`books` mapped to number 95
#200712 18:24:01 server id 1  end_log_pos 1187 CRC32 0xc96cc08e         Delete_rows: table id 95 flags: STMT_END_F
### DELETE FROM `book`.`books`
###   @1=44 /* INT meta=0 nullable=0 is_null=0 */
###   @2='XML 完全探索' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */

根據thread_id號去找init-connect記錄表的登錄用戶和源ip

[root@localhost data]# mysql -u root -p -e "select * from mysql_access_log.access_log  where conn_id=8 ;" 
| conn_id | time                | localname               | matchname  |
+---------+---------------------+-------------------------+------------+-
|       8 | 2020-07-12 18:23:41 | user_web@192.168.53.119 | user_web@% |
+---------+---------------------+-------------------------+------------+-

7. 開啟general-log日志記錄

[ binlog + init-connect ] 方式,受限于binlog本身記錄日志的局限,無法審計一些并不記錄在binlog中的內容。

比如無SELECT、Connect;可同時開啟mysql的general-log記錄,記錄執(zhí)行的所有的語句的信息。

my.cnf [mysqld] 下添加,并重啟mysql生效

general-log=1

general_log_file = /opt/mysql/data/general_log_file.log   #按你實際路徑,注意權限

但存在的不足

  • a. 無論所執(zhí)行語句是否正確執(zhí)行,都會記錄,會導致大量的無用信息,后面的篩選不易操作;
  • b. 當server的并發(fā)訪問非常大時,log的記錄會對IO產一定的影響,以致于影響server的性能;
  • c. 日志文件很容易快速增長;

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • asp+mysql+utf8 網頁出現亂碼問題的解決方法

    asp+mysql+utf8 網頁出現亂碼問題的解決方法

    無論在網頁中加多少UTF8的定義,顯示的結果都還是會有一些小格子,反而定義為gb2312,顯示完全正常
    2014-03-03
  • MySQL limit子句用法及優(yōu)化小結

    MySQL limit子句用法及優(yōu)化小結

    limit在獲取到滿足條件的數據量時即會立刻終止SQL的執(zhí)行,本文主要介紹了MySQL limit子句用法及優(yōu)化小結,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09
  • MySQL優(yōu)化教程之超大分頁查詢

    MySQL優(yōu)化教程之超大分頁查詢

    這篇文章主要給大家介紹了關于MySQL優(yōu)化教程之超大分頁查詢的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • mysql 8.0.17 安裝與使用教程圖解

    mysql 8.0.17 安裝與使用教程圖解

    這篇文章主要介紹了mysql 8.0.17 安裝與使用教程圖解,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • mysql存儲過程之引發(fā)存儲過程中的錯誤條件(SIGNAL和RESIGNAL語句)實例分析

    mysql存儲過程之引發(fā)存儲過程中的錯誤條件(SIGNAL和RESIGNAL語句)實例分析

    這篇文章主要介紹了mysql存儲過程之引發(fā)存儲過程中的錯誤條件(SIGNAL和RESIGNAL語句),結合實例形式分析了mysql使用SIGNAL和RESIGNAL語句來引發(fā)存儲過程中的錯誤條件相關操作技巧與注意事項,需要的朋友可以參考下
    2019-12-12
  • MYSQL主從庫不同步故障一例解決方法

    MYSQL主從庫不同步故障一例解決方法

    第一次做完主從庫同步后正常,但工作過程中發(fā)現有一個庫的數據庫沒有同步起來,在另外一個mysql(3307)中
    2010-06-06
  • Mysql中 IFNULL函數的使用詳解

    Mysql中 IFNULL函數的使用詳解

    IFNULL()函數在MySQL中用來檢查第一個表達式是否為NULL,非NULL則返回第一個值,否則返回第二個值,本文就來詳細的介紹一下如何使用,感興趣的可以了解一下
    2024-09-09
  • DataGrip的MySQL數據導出和導入操作超詳細指南

    DataGrip的MySQL數據導出和導入操作超詳細指南

    很多時候我們會遇到需要將本機數據庫數據導出或者其他數據庫數據的導入操作,這篇文章主要給大家介紹了關于DataGrip的MySQL數據導出和導入操作超詳細指南,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 關于加強MYSQL安全的幾點建議

    關于加強MYSQL安全的幾點建議

    現在php+mysql組合越來越多,這里腳本之家小編就為大家分享一下mysql的安裝設置的幾個小技巧
    2016-04-04
  • 超詳細MySQL8.0.22安裝及配置教程

    超詳細MySQL8.0.22安裝及配置教程

    這篇文章主要介紹了超詳細MySQL8.0.22安裝及配置教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12

最新評論