MySQL Binlog Diggeræ¯ä¸æ¬¾å è´¹çï¼ä¸åºäºå¾å½¢çé¢çbinlogææåæå·¥å ·ä¸sqlå®¡è®¡å·¥å ·ãå½åç误å ã误å¢ã误æ¹æ¶ï¼å®å¯ä»¥å¸®å©æ们ä»binlogä¸å¿«éå®ä½å°è¯¯æä½çéåè¯å¥(redo sql)ï¼åæ¶æ¨çåºåæ»è¯å¥(undo sql)ãæ¤å¤ï¼å®è¿å¯ä»¥ç»å[mysqld]çinit-connectåæ°åmysql 8.0çæ°æ®åºå®¡è®¡ã
Â
ä¸. 对dmlçææåæï¼åæ¶æ¯æ离线binlogï¼
Â
äº . 对ddlçææåæï¼åæ¶æ¯æ离线binlogï¼
Â
ä¸. 对dmlè¿è¡å®¡è®¡ï¼å®¡è®¡ä» 对æ®éç¨æ·èµ·æï¼å®¡è®¡æ¥å£å¨æ¬ææ«å°¾æå ·ä½æä½è¯´æï¼
Â
å. 对ddlç审计ï¼å®¡è®¡ä» 对æ®éç¨æ·èµ·æï¼å®¡è®¡æ¥å£å¨æ¬ææ«å°¾æå ·ä½æä½è¯´æï¼
Â
äº. ä¸è½½å¨çº¿binlog
Â
å . 审计æ¥å£
注æï¼è¿ç§æ¹å¼ä» è½å¯¹æ®éç¨æ·è¿è¡å®¡è®¡, ä¾å¦érootç¨æ·
Step 1.建ç«è®¿é®è¡¨, ç¨äºåå¨ç»å½ä¿¡æ¯
-- 建åº
mysql>Â CREATE DATABASE `auditdb` DEFAULT CHARSET utf8mb4;
-- 建表
mysql> CREATEÂ TABLEÂ `auditdb`.`accesslog`Â (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `ServerID` int(11) DEFAULT NULL,
  `ConnectionID` int(11) DEFAULT NULL,
  `ConnUser` varchar(30) DEFAULT NULL,
  `MatchUser` varchar(30) DEFAULT NULL,
  `LoginTime` datetime DEFAULT NULL,
  PRIMARY KEY (`ID`)
)Â ENGINE=InnoDBÂ AUTO_INCREMENT=1Â DEFAULTÂ CHARSET=utf8mb4;
Â
Step2. 为æ®éç¨æ·èµäºåå ¥æé(é«çº§ç¨æ·å¯ä»¥ä¸èµäºï¼å 为é«çº§ç¨æ·å·²å ·å¤åå ¥æé)
mysql> grant insert on `auditdb`.`accesslog` to å个æ®éç¨æ·@ç¹å®ä¸»æº;   # å¦ææ¯ä¸»ä»æ¶æ, 建议æåæ¥è´¦å·ä¹èµäºè¯¥æéï¼å¦åæ¥: Last_IO_Error: error reconnecting to master '[email protected].*.*.*:3306'
mysql> flush privileges;
æ¥çæ®éç¨æ·å¯ä»¥éè¿ä»¥ä¸å½ä»¤æ¥æ¾ï¼
mysql> select user, host from mysql.user where user !='root';Â
Â
Step3. å¨ç®æ æ°æ®åºç[mysqld]ä¸å¢å 以ä¸ï¼
init-connect='insert into auditdb.accesslog(ServerID, ConnectionID ,ConnUser ,MatchUser ,LoginTime) values(@@server_id, connection_id(),user(),current_user(),now());'
*** é ç½®init-connectå®æåï¼éè¦éå¯mysql(ç产ç¯å¢è¯·æ é) ***
Â
Step 4. ä¸è½½å¹¶å®è£ MySQL Binlog Digger 4.18
https://download.csdn.net/download/bournetai/13184269