MySQL データベースをバックアップするための PHP スクリプト
-
18-09-2019 - |
質問
MySQL データベースをバックアップするための PHP スクリプトを作成しようとしています。
if ( $db_resource = mysql_connect($db_server, $db_username, $db_password, $db_newlink) )
{
if ( mysql_select_db( $db_name, $db_resource ) )
{
$backupFile = $db_name."_".date( "Y-m-d-H-i-s" ).".gz";
$command = "mysqldump --opt -h ".$db_server." -u ".$db_username." -p ".$db_password." ".$db_name." | gzip > ".$db_save_dir."/".$backupFile;
system( $command );
}
}
mysql_close( $db_resource );
シェル端末から実行すると、次のようになります。
[スティングレイ]$ php /[絶対 パス]/db_backup.php
パスワードを入力する:[パスワードを入力します]
mysqldump:エラーが発生しました:1044:アクセス ユーザーに対して拒否されました '[ユーザー名]'@'208.113.128.0/255.255.128.0' データベースへ '[パスワード]' と データベースの選択
さて、本当に理解できないのは、なぜデータベースをパスワードとして呼び出すのかということです。Web ブラウザでファイルを指定すると、問題なく実行されます。私が何をすべきか知っている人はいますか?個人的には、Apache サーバー上で実行できるのであれば、PHP、Python、CGI などはまったく気にしません。
ありがとう。
解決
パスワード フラグの構文は異なります。-p フラグの後のスペースを削除して、もう一度試してください。
他のヒント
完全なオプション名を使用してみてください。私も同様の問題を抱えていましたが、失敗の本当の根本に取り組む時間がありませんでした。ただし、これはうまくいき、私にとってはうまくいきました:
/usr/bin/mysqldump \
--user=username \
--password=password \
dbname > mysqldump.sql
1:-pとPASSWORDの間にスペースを入れない 旧:-p".$db_password."
2:(必要に応じて) そのデータベースに対する特定のユーザーにすべての権限を付与します。
3:ファイルにコマンドを実行するための正しい権限を与えてください。
バックアップするだけの場合は、使用することを強くお勧めします この非常に簡単で、非常に構成可能な、オープンソースの cron バックアップ スクリプト. 。それは素晴らしく、それだけを求めているならきっと気に入ると思います。
本当に Apache 経由で実行する必要がある場合は、バックティックを使用してリモートでスクリプトをトリガーすると、バックアップのローテーション、毎週/毎月のバックアップ、圧縮、ロギングが無料で利用できます。
使用することをお勧めします SQLバディ, 、それはあなたのように私の問題を解決しました。
cron または自動スクリプトを使用する場合にのみ、カスタム スクリプトを続行してください。