init_connect + binlog 記錄 mysql 操做日誌

init_connect + binlog 記錄 mysql 操做日誌

簡介

mysql 的 init_connect 變量是每一個客戶端連上數據庫服務器時執行的一組數據,這組數據能夠是一個或者多個sql語句。mysql

A string to be executed by the server for each client that connects. The string consists of one or more SQL statements, separated by semicolon characters.sql

mysql 的 binlog 日誌用於記錄全部更新了數據庫內容的sql語句,以事件的形式保存。數據庫

The server's binary log consists of files containing 「events」 that describe modifications to database contents.vim

1、記錄鏈接信息

建立表存放日誌

CREATE DATABASE accesslog;
CREATE TABLE accesslog.accesslog (
	`id` INT (11) PRIMARY KEY auto_increment,
	`time` TIMESTAMP,
	`localname` VARCHAR (30),
	`matchname` VARCHAR (30)
)

設置用戶權限

GRANT SELECT ON accesslog.* to root@localhost IDENTIFIED BY 'password'

設置init_connect

在 mysql 配置文件裏(my.cnf或者my.ini)裏[mysqld]裏添加以下設置服務器

init_connect='INSERT INTO accesslog.accesslog VALUES(connection_id(),now(),user(),current_user());'

而後重啓數據庫。工具

2、查詢binlog

查詢binlog是否打開

mysql> show variables like 'log_bin';

若是沒有開啓則開啓binlog 打開mysql配置文件日誌

vim /etc/my.cnf

在[mysqld] 區塊添加以下設置code

logb-bin=mysql-bin

mysql-bin是日誌文件的前綴名 而後重啓服務器生效server

查看binlog日誌位置

binlog 日誌默認存儲在數據目錄,即 mysql 配置文件裏的 datadir 目錄。若是log-bin寫了完整的目錄,則日誌文件在相應目錄。 在目錄下能看到以下文件就是啦 123.png事件

導出日誌

mysql 自帶的工具 mysqlbinlog 用於導出binlog日誌,格式以下:

/mysql/bin/mysqlbinlog --database=test --start-date="2016-03-25 00:00:00"  --stop-date="2016-03-28 15:00:00" /mysql/data/mysql-bin.000071 > test

--database: 指定數據庫名
--start-date: 開始時間
--stop-date: 結束時間
若是star-date 到 stop-date 跨越了好幾個binlog文件能夠經過mysql-bin.000*的方式模糊指定。 這樣就導出了 2016-03-25 00:00:00 到 2016-03-28 15:00:00 之間執行的全部修改過數據的sql語句了。 格式以下 (img) 160328 18:33:29是執行時間 thread id 是客戶端鏈接數據的id,即上面存儲到accelog的id 同時還能夠這樣提取出某張表的sql語句

cat test.sql | grep ‘TABLE_NAME’ > xx.sql

審計與恢復

如上,經過查找binlog能找到客戶端鏈接數據庫的id,去查前面創建的accesslog表就能夠找到是哪一個用戶操做的。 另外,當發生了誤操做以後能夠利用該方法恢復數據。 假如2016-3-25 13:10:00 發生了誤操做。首先找到最近的一次數據庫備份,假如是2016-03-01 00:00:00 那麼則導出從2016-03-01 00:00:00到2016-3-25 13:10:00之間的binlog記錄,而後刪除其中的誤操做語句(必定要刪除)。接下來執行數據庫備份,而後執行binlog導出的sql記錄便可將數據庫恢復至最新版本。

相關文章
相關標籤/搜索