忘れる前にmemo。


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テーブルのみでは完結しないため)



なるほど。
忘れないように。