在引入super_read_only之前,mysql提供了一個選項read_only。開啟read_only之后,會阻止沒有super權限的用戶執行數據庫更新操作。read_only主要用於復制節點。
super_read_only不僅會阻止普通用戶,也會阻止具有super權限的用戶對數據庫寫操作。
read_only和super_read_only是有關聯的。默認二者都是關閉的:
·如果開啟了super_read_only,即使用戶有super權限,也會被禁止更新操作
·設置super_read_only=on,也就隱式地設置了read_only=on
·設置read_only=off,也就隱式地設置了super_read_only=off
即使設置read_only=on,mysql還支持以下的操作行為:
·如果是復制節點,replica線程執行update操作
·使用analyze table、optimize table語句。read only是為了避免對表結構或者內容進行修改。而這些命令不會。
·對temporary表進行操作
·向日志表(mysql.general_log、mysql.slow_log)插入記錄
·mysql 5.7.16開始,更新performance schema表,比如update、truncate表操作
平時關注的大佬網站上,幾天前突然慎重的介紹了一下super_read_only這個參數,搞的我以為有了什么重大改變或bug呢!貼一下以前的筆記吧。