web-dev-qa-db-ja.com

crontab経由のMySQLdump---password = / hashed / password / fileを渡すと、プレーンテキストのパスワードを使用せずにcrontab経由で使用できます

つまり、WordPressバックアップガイドを設定する/自分用のバックアップスケジュールを実際に作成する。

MySQLダンプを毎日実行したいのですが、コマンドには次のいずれかが必要です。

-p then user input 

または

--password="plain text password"

セキュリティを高めるために、少なくともMD5以上のハッシュと保護が施されたファイルにそれを渡すことはできますが、コマンドにユーザー入力を必要としませんか?

どんな助けでもありがたいです!

参考までに、ここで私が実行したいコマンドを

mysqldump -u [username] --password=~/wp_backups/sqldumps/.sqlpwd [database name] > ~/wp_backups/sqldumps/"$(date '+%F').sql"
10

次のパスワードオプションがあります。

  • コマンドラインで-pオプションを使用してパスワードを提供する
  • MYSQL_PWD環境変数を介してパスワードを提供する
  • ~/.my.cnfセクションの下の[mysqldump]ファイルに構成を配置します

すべての場合において、クライアントは認証を行うためにプレーンテキストのパスワードを必要とします。ハッシュについて説明しましたが、ハッシュの特徴は一方向変換関数であるため(つまり、ハッシュから元のパスワードを復元することができないため)、認証トークンとして使用できません。

Wordpressデータベースをバックアップしているため、Wordpressをホストしているのと同じアカウントからパスワードを非表示にしようとしても、セキュリティが向上しません。 Wordpressを実行するユーザー(データベース資格情報はwp-config.phpファイルから簡単に抽出できます)。

したがって、次の~/.my.cnfを定義することをお勧めします。

[mysqldump]
Host = your_MySQL_server_name_or_IP
port = 3306
user = database_user_name
password = database_password

次に、ファイルに0600アクセス許可があることを確認します。この方法では、mysqldumpはコマンドラインで指定されたデータベース資格情報を必要としません(これらは~/.my.cnfファイルから読み取られます)。

12
galaxy

これにより、ファイルからパスワードとユーザー名を渡すファイル(OSであればどんなファイルでもかまいません)が作成されます。 「ハッシュ」されていても、誰かがファイルを手に入れても違いはありませんが、そのまま使用できます。それが私のために働くなら、それは彼らのために働くでしょう。

したがって、私の質問のセキュリティ部分に答えるために、chmod 0600とSudo chown $ USER:nogroupは、一度作成されたファイルへの不正アクセスを防止します。

mkdir ~/wp_backups/sqldumps &&  touch ~/wp_backups/.sqlpwd &&  nano ~/wp_backups/.sqlpwd && chmod 600 ~/wp_backups/.sqlpwd && Sudo chown $USER:nogroup ~/wp_backups/.sqlpwd

-。sqlpwdの内容

[mysqldump]             # NEEDED FOR DUMP
user=username
password=password

[mysql]             # NEEDED FOR RESTORE
user=username
password=password

--SQL CLI構文

mysqldump --defaults-extra-file=~/wp_backups/.sqlpwd [database] > ~/wp_backups/sqldumps/"$(date '+%F').sql"
2

mysqldump-secure を見ると、mysqldumpのラッパースクリプトとして機能し、(defaults-extra-fileを介して)パスワードのセキュリティを処理し、さらに非対称暗号化を介してmysqlデータベースを暗号化します。

2
lockdoc