my.cnfのread_onlyについて調べた


概要

某所でMySQLのスレーブサーバーを構築することになり、友人からread_only権限について教えてもらったので改めて自分で調べなおしてみた。

read_onlyとは?

  • MySQLのスレーブサーバーではmy.cnfread_only設定をするとSUPER権限を持つアカウント以外の更新クエリーは実行できなくなる

疑問

  • rootアカウントが書き込み権限を持つアカウントを発行しようとするとどうなるのか
    予測1. 作成できない
    予測2. SUPER権限有りで作成できる

検証環境

  • Vagrant
  • CentOS release 6.5 (Final)
  • Server version: 5.5.46 MySQL Community Server (GPL)

テスト環境を用意した

初期状態

grant all privilegesのアカウントを作成する

この時点ではtest_userアカウントはhogeデータベースに対して全権限があるとしてアカウントは作成された。ここは普通なんだね。

hogeデータベースにusersテーブルを作った

test_userでinsertを実行すると

insertが拒否された。なるほど、read_onlyが有効になっているから更新系クエリーが実行できないということなんだね。

my.cnfからread_onlyを外したらinsert出来た

設定が外れた瞬間普通に実行できる。

結論

自分の予想は全て外れたw

  • rootアカウントでgrant allのアカウント作成を実行すると、一般権限でgrant allなアカウントが作成される。
  • 但しread_only設定につき更新系クエリーが実行できない。設定がなければ更新系クエリーが実行できる。

参考


シェアする

  • このエントリーをはてなブックマークに追加

フォローする