テックブログ

技術ネタ

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.html

Password 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

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください