mysql5.6レプリケーションでold_passwordが拒否される

こんにちは。小宮です。

同僚の湯尾さんから教えてもらった情報を貼っておきます。

【mysql5.6レプリケーション仕様が変わった話】

某環境で mysql5.5でフルdumpしたSQLを5.6に流し込む作業を行い、その後差分データを5.5→5.6にレプリケーションしようとしたところ
レプリケーションが出来なかったという症状がありました。

その後、mysql5.6の設定見直しのためstop slaveしてmysqlをrestartしレプリケーション貼り直しと試みましたが
今度は5.6環境同士でもレプリケーションが貼れなくなりました。

原因はmysql5.6からsecure_authの仕様が変更されたためクライアント([mysql]以下の記述)設定で skip-secure-auth が設定されていても
レプリケーションIOの時点でold_password(16桁パスワード)が拒否されるためレプリケーション自体開始できないとのことです。
ステータス(show slave status\G)では下記の様になります。

解決策として、お客様の許可を得て、mysql5.5、5.6環境の両方に新たにセキュアなレプリケーション用アカウントを作成して、それでレプリケーション貼りました。
セキュア(old_passwordではない)なパスの作り方は下記の通り。

mysql5.6にデータ移設したいなど相談を受けた場合は、パスワードの桁数にご注意下さい。という話です。

参考:
日々の覚書: MySQL5.6とMySQL5.0のレプリケーションでI/OスレッドがError: 2049
yoku0825さん情報のおかげ様で夜中に電話されなくてよかったです。ありがとうございます。

みていただいてありがとうございました。

おすすめ記事