2

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

パスワードを入力してください: [ I INPUT PASSWORD ]

mysqldump: エラーが発生しました: 1044:データベースの選択時に、データベース '[ PASSWORD ]' へのユーザー '[ USERNAME ]'@'208.113.128.0/255.255.128.0' のアクセスが拒否されました

さて、私が本当に理解できないのは、データベースをパスワードとして呼び出す理由です。Web ブラウザーでファイルを指定すると、問題なく動作します。私が何をすべきか知っている人はいますか?個人的には、Apache サーバーで実行できる限り、PHP、Python、CGI などのいずれであってもかまいません。

ありがとう。

4

5 に答える 5

3

パスワード フラグの構文は異なります。-p フラグの後のスペースを削除して、もう一度試してください。

于 2009-12-08T15:47:07.410 に答える
1

1: -p と PASSWORD の間にスペースを入れない ex: -p".$db_password."

2: そのデータベースの特定のユーザーに (必要に応じて) すべての権限を付与します。

3: コマンドを実行するための正しい権限をファイルに与えます。

于 2013-01-24T21:23:13.603 に答える
1

完全なオプション名を使用してみてください。同様の問題がありましたが、失敗の本当の原因に取り組む時間がありませんでした。ただし、これは機能し、私にとっては機能します:

/usr/bin/mysqldump \
--user=username \
--password=password \
dbname > mysqldump.sql
于 2009-12-08T15:50:58.087 に答える
0

SqlBuddyを使用することをお勧めします。それはあなたのような私の問題を解決しました。

cron または自動化されたスクリプトを使用する場合にのみ、カスタム スクリプトを使用してください。

于 2010-08-25T14:10:12.310 に答える
0

単にバックアップするだけの場合は、この非常に簡単で構成可能なオープン ソースの cron バックアップ スクリプトを使用することを強くお勧めします。それは素晴らしいですし、それがあなたの求めるものならきっと気に入っていただけると思います。

本当に apache を介して実行する必要がある場合は、バックティックを使用してスクリプトをリモートでトリガーし、バックアップ ローテーションと毎週/毎月のバックアップ、圧縮、およびログを無料で取得できます。

于 2009-12-08T16:33:35.287 に答える