mysqldump コマンド実行時にパスワードを聞かれないようにするには

cron などで mysqldump を定期実行するとき、パスワードの入力を省略する方法をご紹介します。

Photo by Rubaitul Azad on Unsplash

MySQL データベースのバックアップを取得したいときは、下記のコマンドを実行して取得できます。

mysqldump -u your_name -p your_db_name > your_db_name.sql

このコマンドで、your_name というデータベースユーザーで MySQL にログインし、your_db_name という名前のデータベースのダンプファイルを取得できるのですが、コマンドを実行すると your_name というユーザーのパスワードを聞かれます。

普通にCLIで実行する時は問題ありませんが、cron などで定期実行するには都合が悪いですよね。

このようなときは .my.conf というファイルを作ってパスワードの入力を回避することができます。

.my.cnf ファイルの設定

初めに自分のホームディレクトリに .my.cnf という設定ファイルを作成します。

vi ~/.my.cnf

このファイルの中身は以下のようにします。DBユーザーが複数いる時も使えるのを想定しています。your_nameyour_password といったところに実際のユーザー名とパスワードを入れます。

[clientuser1]
user=your_name
password=your_password

[clientuser2]
user=other_name
password=other_password

:wq で vi エディタを閉じたら、以下のコマンドでパーミッションを変更しておきます。

chmod 600 ~/.my.cnf

mysqldump を実行

あとは下記のコマンドのように --defaults-group-suffix=user1 のようにしてユーザーを指定して実行します。この user1 の部分は ~/.my.cnf に書いた [client〜この部分〜] になります。

mysqldump --defaults-group-suffix=user1 your_db_name > your_db_name.sql

ちなみに、データベース名を ~/.my.cnf に設定することもできますが、個人的には事故を防ぐためにもデータベース名はコマンドで明示した方が良いかなと思います。

Published 2024-02-20
Updated 2024-02-20