天天看點

如何設定mysql資料庫為隻讀?

設定指令:

mysql> set global read_only=1;    #1是隻讀,0是讀寫

mysql> show global variables like "%read_only%";

如何設定mysql資料庫為隻讀?

以下是相關說明:

      1、對于資料庫讀寫狀态,主要靠 “read_only”全局參數來設定;

      2、預設情況下,資料庫是用于讀寫操作的,是以read_only參數也是0或faluse狀态,這時候不論是本地使用者還是遠端通路資料庫的使用者,都可以進行讀寫操作;

      3、如需設定為隻讀狀态,将該read_only參數設定為1或TRUE狀态,但設定 read_only=1 狀态有兩個需要注意的地方:

  1)read_only=1隻讀模式,不會影響slave同步複制的功能,是以在MySQL slave庫中設定了read_only=1後,通過 show slave status\G ,指令檢視salve狀态,可以看到salve仍然會讀取master上的日志,并且在slave庫中應用日志,保證主從資料庫同步一緻;

  2)read_only=1隻讀模式,可以限定普通使用者進行資料修改的操作,但不會限定具有super權限的使用者的資料修改操作;在MySQL中設定read_only=1後,普通的應用使用者進行insert、update、delete等會産生資料變化的DML操作時,都會報出資料庫處于隻讀模式不能發生資料變化的錯誤,但具有super權限的使用者,例如在本地或遠端通過root使用者登入到資料庫,還是可以進行資料變化的DML操作;

那麼super使用者怎麼控制讀寫?

      1、為了確定所有使用者,包括具有super權限的使用者也不能進行讀寫操作,就需要執行給所有的表加讀鎖的指令 “flush tables with read lock;”這樣使用具有super權限的使用者登入資料庫,想要發生資料變化的操作時,也會提示表被鎖定不能修改的報錯。

        1)這樣通過 設定“read_only=1”和“flush tables with read lock;”兩條指令,就可以確定資料庫處于隻讀模式,不會發生任何資料改變。