忘れる前にmemo。
mysqlでuserを作成する際、レプリケーションしていると、masterで作ったユーザが
slaveに反映されてしまう。(何も設定しないと。)
このときの問題点は、負荷分散のためのslaveに対しては、select以外の権限が不要で
あるにもかかわらず、masterに設定した権限すべてが反映されてしまう点。
これを回避するために、2つ手段がある。
1.反映されたslaveのuserから権限を剥奪すること
2.slaveにバイナリを送らないようにして、userを作成すること
(master)
(slave)
2個目の方法で注意するのは、バイナリログを送らないように設定した部分を元に戻すこと。
上記どちらの方法でも可能とのこと。
あと、user権限の確認方法は以下。
mysql > show grants for user@’IP’;
普通にmysqlのuserテーブルとかを見るだけでは正しい情報が得られないので、
こちらの方法で確認するのが正規らしい。
(実際のuser権限はdbテーブルとの関係もあるので、userテーブルのみでは完結しないため)
なるほど。
忘れないように。
mysqlでuserを作成する際、レプリケーションしていると、masterで作ったユーザが
slaveに反映されてしまう。(何も設定しないと。)
このときの問題点は、負荷分散のためのslaveに対しては、select以外の権限が不要で
あるにもかかわらず、masterに設定した権限すべてが反映されてしまう点。
これを回避するために、2つ手段がある。
1.反映されたslaveのuserから権限を剥奪すること
mysql > revoke INSERT, UPDATE, DELETE, CREATE ON *.* from ’user’@’任意のIP’;
2.slaveにバイナリを送らないようにして、userを作成すること
(master)
mysql > set sql_log_bin = 0;
mysql > GRANT SELECT, INSERT, UPDATE, ・・・(任意), ON *.* TO ’user’@’任意のIP’ ;
mysql > set sql_log_bin = 1;
(slave)
mysql > GRANT SELECT ON *.* TO ’user’@’任意のIP’;
2個目の方法で注意するのは、バイナリログを送らないように設定した部分を元に戻すこと。
上記どちらの方法でも可能とのこと。
あと、user権限の確認方法は以下。
mysql > show grants for user@’IP’;
普通にmysqlのuserテーブルとかを見るだけでは正しい情報が得られないので、
こちらの方法で確認するのが正規らしい。
(実際のuser権限はdbテーブルとの関係もあるので、userテーブルのみでは完結しないため)
なるほど。
忘れないように。