mysql_config_editorを使ってパスワードのベタ書きを回避

概要

MySQLのDBダンプのスクリプトなどパスワードをベタ書きしている場合があります。

例えば

mysqldump -u dbdump --password=dbdump testdb (オプション略)

こんな感じでパスワードを書いてしまっています。

そこでmysql_config_editor(MySQL5.6以上)を使ってパスワードをベタ書きしないようにする方法がありましたのでそのメモです。

ユーザ作成

LinuxユーザとMySQLユーザを両方作っておきます。
ここではMySQLダンプを想定しているのでユーザ名は『dbdump』にします。

設定

dbdumpユーザにスイッチします。
スイッチ後、以下コマンドで設定出来ます。
パスワードを聞かれますのでMySQLのdbdumpユーザのパスワードを入力します。

[root@test ~]# su - dbdump
[dbdump@test ~]$ mysql_config_editor set -login-path=dbdump --user=dbdump --password
Enter password: 

当然ですがMySQLにdbdumpユーザが存在しないとエラーになります。


.mylogin.cnf
こういったファイルが作成されます。
中身は難読化されています。

Ѿ1?^?Jw00?cT z!1yz????????x???!s?q#`?˫_?T? ٌ?ecO?r?H?8/r-??'?ӳ?K????A?s

難読化されていることが分かります。

mysql_config_editor設定前

$ mysql -u dbdump 
ERROR 1045 (28000): Access denied for user 'dbdump'@'localhost' (using password: NO)

mysql_config_editor設定前はパスワードの-pオプションを付けないとエラーになります。

mysql_config_editor設定後

$ mysql -u dbdump 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.6.23 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

mysql_config_editor設定後はパスワードの-pオプションを付けなくてもログイン可能です。

またダンプスクリプトにも--password=こういったパスワードオプションの記述も不要になります。