MySQLのコマンドラインで-pオプションを使わずにパスワードを指定する方法 | 株式会社ハートビーツ(HEARTBEATS Corporation)|AWS・クラウド・サーバーなどのインフラ運用を24時間365日サポート

インフラエンジニアway

MySQLのコマンドラインで-pオプションを使わずにパスワードを指定する方法

技術

こんにちは。CTOの馬場です。

今回もインフラエンジニア向けにちょっとした情報を紹介します。

今回はバッチ処理でMySQLに接続するときに、パスワードをうまく受け渡す方法を紹介します。

まずは-pオプションでコマンドラインに書く方法があります。が、プロセスツリーに表示されてしまうため安全とは言えません。そこで2つの方法を紹介します。

  1. .my.cnfに設定する
  2. .my.cnfなしでなんとかする

.my.cnfに設定する

ユーザのホームディレクトリに.my.cnfというファイルを置いて下記の内容を設定することで、パスワードを指定することができます。このパスワードは標準のMySQLクライアント全てで使用されます。

※ファイルの権限は600に設定しておきましょう。

[client]
password="my_password"

この方法だと、ユーザごとにパスワードが分かれている場合にはうまく対応できません。その場合の対処法は続きをどうぞ

.my.cnfなしでなんとかする

DBUSER変数にユーザ名、DBPASSWORD変数にパスワード、DBNAME変数に接続先DB名を記述する前提です。

以下の方法で、ファイルを設置しなくても1行でなんとかすることができます。

mysql --defaults-file=<( printf '[client]npassword=%sn' ${DBPASSWORD} ) 
-u ${DBUSER} ${DBNAME}

このとき、プロセスツリーは以下のようになります。

mysql --defaults-file=/dev/fd/63 -u ユーザ名 DB名

ぜひお試しください。

参考: MySQL :: MySQL 4.1 リファレンスマニュアル :: 4.1.2 my.cnf オプション設定ファイル

TOP