mysql_config_editor の罠
こんにちはkinjoです。
mysql_config_editor でちょっとハマった事を書きます。
MySQL で パスワードを省く場合に.my.cnf等にログイン情報を記載する場合がありますが
[mysql] user=root password='password'パスワードが平文で書かれており、あまりよろしくない。
そこで出てくるのが「mysql_config_editor」となります。[root@cent_test ~]# mysql_config_editor set -G mysql -h localhost -u root -p Enter password:「mysql_config_editor」で保存されたパスワードは暗号化されており、パスワードがみられる心配はありません。
[root@cent_test ~]# cat .mylogin.cnf レt・P'd[愷・%・LJ1ッ・u?77?ス Xn.ォュァ・ッ・s?`・・ゥ$ zレ,Lキ0モIトァy。 0ケKェ1マ.;・∵どのユーザーが設定されているか等は print で確認できます。
この際にもパスワードは非表示となります。[root@cent_test ~]# mysql_config_editor print --all [mysql] user = root password = ***** host = localhostいつものように設定していた時、ちゃんと mysql_config_editor で設定したのにログインできない という事態が発生しました。
mysqlコマンドでのパスワード入力では問題無くログインでき、ためしに.my.cnfに書いてもログイン可能。
何度か設定しなおしてもログインできないので、パスワードの入力ミスも考えにくい。
パスワードに含まれる記号等がおかしいのかもしれないと思い、文字列を変更してみたらログインできるようになりました。結論としてはパスワードに「#」(シャープ)記号が使われていると mysql_config_editor ではうまくログインができないようでした。
マニュアルのユーザーコメントをよ~く見ると「#」が使えないと報告されているので、マニュアルをきっちり読みましょうという事ですね。
https://dev.mysql.com/doc/refman/5.7/en/mysql-config-editor.html
https://dev.mysql.com/doc/refman/5.6/ja/mysql-config-editor.htmlPassword string with character “#” in it will cause authentication failure because when strings are read, hash characters are treated as the start of a comment.
ちなみに、mysql はコミュニティのレポジトリからインストールしたバージョンとなっています。
[root@cent_test ~]# rpm -q mysql-community-server mysql-community-server-5.7.20-1.el7.x86_64 [root@cent_test ~]# mysql --version mysql Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using EditLine wrapper