2013年7月1日月曜日

MySQL 5.6のCHANGE MASTER TOで出るようになったワーニング

MySQL 5.5までは何も出なかったけど、MySQL 5.6で追加されたワーニング。

mysql56> CHANGE MASTER TO MASTER_HOST= 'localhost', MASTER_PORT= 64055, MASTER_USER= 'replicatior', MASTER_PASSWORD= 'xxxx', MASTER_LOG_FILE= 'bin.000001', MASTER_LOG_POS= 1;
Query OK, 0 rows affected, 2 warnings (0.06 sec)

mysql56> SHOW WARNINGS;
+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message                                                                                                                                                                                                        |
+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Note  | 1759 | Sending passwords in plain text without SSL/TLS is extremely insecure.                                                                                                                                         |
| Note  | 1760 | Storing MySQL user name or password information in the master.info repository is not secure and is therefore not recommended. Please see the MySQL Manual for more about this issue and possible alternatives. |
+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

shell> cat data/master.info
23
bin.000001
4
localhost
replicatior
xxxx
64055
60
0





0
1800.000

0

86400


0

1759は読んだそのまま、パスワードがSSL使わずにマスターに送信されてるぞ、というNote。

1760は、CHANGE MASTER TOでUSER_NAMEとUSER_PASSWORDを指定するとmaster.info(master_info_repository= TABLEならmysql.slave_master_info)に平文で格納されるから危ういぞ、というNote。

どうすればこれが出なくなるかというと、START SLAVEで指定するようにする。

//
mysql56> CHANGE MASTER TO MASTER_HOST= 'localhost', MASTER_PORT= 64055, MASTER_LOG_FILE= 'bin.000001', MASTER_LOG_POS= 1;
Query OK, 0 rows affected (0.04 sec)

mysql56> START SLAVE USER= 'replicator' PASSWORD= 'xxxx'; --コンマ要らなかったり、MASTER_USERじゃなかったり。
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql56> SHOW WARNINGS;
+-------+------+------------------------------------------------------------------------+
| Level | Code | Message                                                                |
+-------+------+------------------------------------------------------------------------+
| Note  | 1759 | Sending passwords in plain text without SSL/TLS is extremely insecure. |
+-------+------+------------------------------------------------------------------------+
1 row in set (0.00 sec)

shell> cat data/master.info
23
bin.000001
4
localhost


64055
60
0





0
1800.000

0

86400


0

当然、master.infoにUSERとPASSWORDを保存しなくなるので、mysqldを再起動すると

2013-07-01 19:39:46 16508 [ERROR] Slave I/O: Fatal error: Invalid (empty) username when attempting to connect to the master server. Connection attempt terminated. Error_code: 1593
2013-07-01 19:39:46 16508 [Note] Slave I/O thread killed while connecting to master
2013-07-01 19:39:46 16508 [Note] Slave I/O thread exiting, read up to log 'bin.000001', position 4

こうなる。

まあ、好き好きかな。。


【2013/07/01 19:49】
マニュアルへのリンク忘れてた。。
http://dev.mysql.com/doc/refman/5.6/en/start-slave.html

【2013/07/02 10:19】
このNoteわかりにくいから変えようぜ、というBugsはこちら。
http://bugs.mysql.com/bug.php?id=68602

0 件のコメント :

コメントを投稿