詳細(xì)文章和圖見myblog
點(diǎn)擊這里直達(dá)makerroot
勒索防不勝防(2019/06/01兒童節(jié))
兒童節(jié)快樂嗎粒竖?反正我是不快樂照捡,一方面我已經(jīng)不是兒童了叮贩,另一個(gè)方面辛苦寫的文章被一個(gè)叫做‘勒索’的東西全部搞掉击狮,寫到此處的時(shí)候很難受,所以不管什么東西益老,安全性是真的很重要彪蓬,所以呀經(jīng)常備份就很重要了,養(yǎng)成良好的備份習(xí)慣從我做起捺萌。
勒索之后的表大家看看档冬,如圖所示。
勒索圖
為了解決這個(gè)問題桃纯,首先從數(shù)據(jù)庫開始入手酷誓。
1建議關(guān)閉所有的外部連接數(shù)據(jù)庫的形式
select host,user from user;
顯示如圖所示
未關(guān)閉的情況
刪除host含有%的用戶數(shù)據(jù)
delete from user where host='%';
刪除之后如圖所示。
關(guān)閉的情況
2開啟binlog
binlog 基本認(rèn)識
MySQL的二進(jìn)制日志可以說是MySQL最重要的日志了态坦,它記錄了所有的DDL和DML(除了數(shù)據(jù)查詢語句)語句盐数,以事件形式記錄,還包含語句所執(zhí)行的消耗的時(shí)間伞梯,MySQL的二進(jìn)制日志是事務(wù)安全型的玫氢。
一般來說開啟二進(jìn)制日志大概會有1%的性能損耗(參見MySQL官方中文手冊 5.1.24版)帚屉。二進(jìn)制有兩個(gè)最重要的使用場景:
其一:MySQL Replication在Master端開啟binlog,Mster把它的二進(jìn)制日志傳遞給slaves來達(dá)到master-slave數(shù)據(jù)一致的目的漾峡。
其二:自然就是數(shù)據(jù)恢復(fù)了攻旦,通過使用mysqlbinlog工具來使恢復(fù)數(shù)據(jù)。
二進(jìn)制日志包括兩類文件:二進(jìn)制日志索引文件(文件名后綴為.index)用于記錄所有的二進(jìn)制文件灰殴,二進(jìn)制日志文件(文件名后綴為.00000*)記錄數(shù)據(jù)庫所有的DDL和DML(除了數(shù)據(jù)查詢語句)語句事件敬特。
開啟binlog日志的方法:
vim編輯打開mysql配置文件
# vim /etc/my.cnf
在[mysqld] 區(qū)塊
設(shè)置/添加 log-bin=mysql-bin
開啟logbin
確認(rèn)是打開狀態(tài)(值 mysql-bin 是日志的基本名或前綴名);
重啟mysqld服務(wù)使配置生效
如圖所示牺陶。
重啟的效果
也可登錄mysql服務(wù)器,通過mysql的變量配置表辣之,查看二進(jìn)制日志是否已開啟
登錄服務(wù)器
# mysql -u root -p密碼
mysql> show variables like 'log_%';
3常用binlog日志操作命令
1.查看所有binlog日志列表
mysql> show master logs;
2.查看master狀態(tài)掰伸,即最后(最新)一個(gè)binlog日志的編號名稱,及其最后一個(gè)操作事件pos結(jié)束點(diǎn)(Position)值
mysql> show master status;
3.刷新log日志怀估,自此刻開始產(chǎn)生一個(gè)新編號的binlog日志文件
mysql> flush logs;
注:每當(dāng)mysqld服務(wù)重啟時(shí)狮鸭,會自動執(zhí)行此命令,刷新binlog日志多搀;在mysqldump備份數(shù)據(jù)時(shí)加 -F 選項(xiàng)也會刷新binlog日志歧蕉;
4.重置(清空)所有binlog日志
mysql> reset master;
4查看某個(gè)binlog日志內(nèi)容
mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
選項(xiàng)解析:
IN 'log_name' 指定要查詢的binlog文件名(不指定就是第一個(gè)binlog文件)
FROM pos 指定從哪個(gè)pos起始點(diǎn)開始查起(不指定就是從整個(gè)文件首個(gè)pos點(diǎn)開始算)
LIMIT [offset,] 偏移量(不指定就是0)
row_count 查詢總條數(shù)(不指定就是所有行)
A.查詢第一個(gè)(最早)的binlog日志:
mysql> show binlog events\G;
B.指定查詢 mysql-bin.000021 這個(gè)文件:
mysql> show binlog events in 'mysql-bin.000021'\G;
C.指定查詢 mysql-bin.000021 這個(gè)文件,從pos點(diǎn):8224開始查起:
mysql> show binlog events in 'mysql-bin.000021' from 8224\G;
D.指定查詢 mysql-bin.000021 這個(gè)文件康铭,從pos點(diǎn):8224開始查起惯退,查詢10條
mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 10\G;
E.指定查詢 mysql-bin.000021 這個(gè)文件,從pos點(diǎn):8224開始查起从藤,偏移2行催跪,查詢10條
mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 2,10\G;
總結(jié):所謂恢復(fù),就是讓mysql將保存在binlog日志中指定段落區(qū)間的sql語句逐個(gè)重新執(zhí)行一次而已夷野。