mysqlやmysqldumpで「 [Warning] Using a password on the command line interface can be insecure.」という警告が表示される場合の対処
小粋空間 » MySQL » mysqlやmysqldumpで「 [Warning] Using a password on the command line interface can be insecure.」という警告が表示される場合の対処
mysqlやmysqldumpで「 [Warning] Using a password on the command line interface can be insecure.」という警告が表示される場合の対処について紹介します。
1.問題点
さくらインターネットでMySQLのバックアップを取得しようと思い、下記のコマンドを実施しました。
$ mysqldump -h mysqlxxx.db.sakura.ne.jp -u hoge -phuga testdatabase > testdatabase.sql
これまでは実行できていたのですが、今回は下記の警告に遭遇しました。
mysqldump: [Warning] Using a password on the command line interface can be insecure.
警告なのでバックアップは取得できたようですが、警告を解消する方法がわかりません。
ということで、mysqldumpで「 [Warning] Using a password on the command line interface can be insecure.」という警告が表示される場合の対処について紹介します。
2.原因
原因は、パスワードを入れてmysqlコマンドやmysqldumpを実行すると、この警告が表示されるようです。
3.対処方法
ここではパスワードを別ファイルにしてコマンドラインにパスワードを入力しない方法を紹介します。
まず、下記の内容を、任意のディレクトリ・任意のファイル名で作成します。ここでは"test.conf"とします。実際には".test.conf"など、ピリオドつきのファイル名がいいと思います。
[client]
password = <パスワード>
ファイルのパーミッションを変更します(後で実施でもOK)。
$ chmod 400 test.conf
パーミッションのライト権を外しておかないと、コマンド実行時に下記のエラーが発生するケースがあるようです。
Warning: World-writable config file '/home/foo/test.conf' is ignored
ファイルを作成したら、下記のコマンドラインを実行します。これで警告が表示されなくなると思います。
$ mysqldump --defaults-extra-file=test.conf -h mysqlxxx.db.sakura.ne.jp -u hoge -phuga testdatabase > testdatabase.sql
コマンドラインの解説ですが、"--defaults-extra-file"オプションで、作成したファイルを読み込んでいます。
配置したディレクトリ以外でコマンドを実行する場合は、下記のように相対パスまたは絶対パスを指定してください。
$ mysqldump --defaults-extra-file=/home/foo/test.conf -h mysqlxxx.db.sakura.ne.jp -u hoge -phuga testdatabase > testdatabase.sql
なお、"--defaults-extra-file"オプションはコマンドの第1パラメータに必ず指定してください。
第2パラメータ以降で指定すると次のエラーになります。
mysqldump: [ERROR] unknown variable 'defaults-extra-file=test.conf'
私はこれでひっかかって随分悩みました(笑)。