Mysqldumpとcronjobsを使用してデータベースをバックアップしようとしています。
さて、私は次のコマンドをユーザーrootのcrontabに追加しました:
*/30 * * * * mysqldump -u root -pVERYSECUREPASSWORD --all-databases > /var/www/cloud/dump_komplett.sql &> /dev/null
これは今のところ問題なく動作しますが、問題はこのコマンドでパスワードが設定されていることです。
したがって、次のような.database.cnfファイルを含めたいと思います。
[mysqldump]
user=root
password=VERYSECUREPASSWORD
mysqldumpコマンドをに変更しました
mysqldump --defaults-extra-file="/var/crons/mysql/.database.cnf" --all-databases -u root > /var/www/cloud/dump_komplett.sql
この問題を解決するために。
しかし、このコマンドは次のエラーで失敗します。
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
何が悪いのかわかりません。
これが私も試したいくつかのコマンドです:
mysqldump --defaults-extra-file="/var/crons/mysql/.database.cnf" --all-databases > /var/www/cloud/dump_komplett.sql
mysqldump --defaults-file="/var/crons/mysql/.database.cnf" --all-databases > /var/www/cloud/dump_komplett.sql
mysqldump --defaults-file="/var/crons/mysql/.database.cnf" --all-databases -u root > /var/www/cloud/dump_komplett.sql
および.database.cnfの内容私も試しました:
[client]
user=root
password=VERYSECUREPASSWORD
[mysqldump]
Host=localhost
user=root
password=VERYSECUREPASSWORD
[client]
Host=localhost
user=root
password=VERYSECUREPASSWORD
ユーザーは、u
パラメーターを使用してファイルではなく、コマンドで指定する必要があります。
cron
を使用してmysqldump
ジョブをスケジュールする方法の詳細については、 この回答 を確認してください。
パスワードは引用符で囲む必要があることがわかりました
[client]
user=root
password="VERYSECUREPASSWORD"
英数字以外の記号がたくさん含まれているパスワードでは機能しない理由を理解するのに少し時間がかかりました