mysqlのパスワードを外部ファイルで指定する

通常 mysql のクライアントからログインする際のパスワードは都度入力をする必要がある。が、mysqldump のような定期実行する必要がある場合などコマンドラインオプションにパスワードを入力して対応していた(シェルスクリプトなどにパスワード書きたくないなと思いつつ)。

5.7 以降からかどうかは不明だけど、コマンドラインインターフェイスからのパスワードの入力がデフォルトの状態ではできなくなっているようだ。これだと困るという事で調べると、外部ファイルを読み込む形で対応ができるみたい。

具体的には下記のように「--defaults-extra-file」を指定してやる。注意点としてはコマンドの次の位置、オプションとしては最初に記述する必要があるらしい。

# mysqldumpとかでパスワード書きたくない。
USER=database_user
mysqldump --defaults-extra-file=/path/to/extra.cnf table --opt --events -u${USER} --databases > /path/to/dump.sql

設定された extra.cnf ファイルは以下のような内容にしてパスワードを記述する。

# extra.cnf
[client]
password="password"

これ暗号化できたりしないのかな。まぁいいや。メモメモ

参考