cron などで mysqldump を定期実行するとき、パスワードの入力を省略する方法をご紹介します。
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
という設定ファイルを作成します。
vi ~/.my.cnf
このファイルの中身は以下のようにします。DBユーザーが複数いる時も使えるのを想定しています。your_name
や your_password
といったところに実際のユーザー名とパスワードを入れます。
[clientuser1]
user=your_name
password=your_password
[clientuser2]
user=other_name
password=other_password
:wq
で vi エディタを閉じたら、以下のコマンドでパーミッションを変更しておきます。
chmod 600 ~/.my.cnf
あとは下記のコマンドのように --defaults-group-suffix=user1
のようにしてユーザーを指定して実行します。この user1
の部分は ~/.my.cnf
に書いた [client〜この部分〜]
になります。
mysqldump --defaults-group-suffix=user1 your_db_name > your_db_name.sql
ちなみに、データベース名を ~/.my.cnf
に設定することもできますが、個人的には事故を防ぐためにもデータベース名はコマンドで明示した方が良いかなと思います。