リモートサーバーのデータベース (コードではなくデータのみ) をバックアップし、ファイルをダウンロードするための PHP ベースのソリューションが必要です。そのようなことを行うにはシェルベースのソリューションの方が優れていることは知っていますが(ローカルシステムでシェルスクリプトを実行し、SSHを介してリモートシステムに接続する)、URLを知っていてデータベース資格情報を持っているだけで十分なPHPベースのソリューションが必要ですバックアップを取るための非技術者。PHP スクリプトは、リモート サーバーにアップロードして実行できます。
以下は私が欲しい機能です: -
- 少なくとも InnoDb エンジンをサポートする必要があります。外部キー制約をエクスポートする必要があります。他のすべてのエンジンをサポートしていれば害はありません。
可能な限り多くの制限が存在する場合、すべてのサーバーで動作するはずです (
safe_mode
有効exec()
、system()
機能無効などのいくつかの制限について知っています)。どこでも動作することが保証されている非常に汎用的なソリューションが必要です。プロセスはパスワード認証されている必要があります (データベース資格情報を要求します)。
今、私は物事を分解し、非常に基本的なことから始めています. 以下は、これまでの私の仮定といくつかの質問です:-
exec
などのシステム機能system
を共有ホスティング サーバーで完全に無効にできるかどうかはわかりません。オーバーライドできないように無効になっている場合、ここmysqldump
に示すベースのソリューションは普遍的に機能しません。質問 -ただし、内に存在するファイルに対してシステム関数を実行できるようになっている場合、ソリューションは安全に機能しますか?
safe_mode
safe_mode_exec_dir
PHP を使用してこれを行うことのセキュリティ リスクについて質問したところ、Web スペースでバックアップ ファイルを作成してはならないことがわかりました (
mysqldump
ベースのソリューションの場合、ダウンロードする前にまずバックアップ ファイルを作成する必要があると思います)。したがって、ソリューションではバックアップ ファイルをそこに作成する必要はありません (他の場所に作成しても問題ありません)。
質問 -しかし、共有ホスティング プロバイダーはこれを許可しますか?phpmysqldumpなどのさまざまな汎用ユーザー提供の PHP クラスを調べましたが、
mysqldump
システム コマンドを使用してバックアップを取るベース ソリューションの使用法が見つかりませんでした。それらはSHOW CREATE TABLE
、すべてのテーブル作成、データ挿入クエリを取得し、実際にファイルとして保存せずにそれらをダウンロードするなどのことを行います (したがって、セキュリティリスクはありません)。
質問-最初のポイントのソリューションで与えられた単純なことをせずにこれらすべてのことを行うと結論付けるのは正しいmysqldump
ですか?これは汎用で安全なソリューションではないからです?
質問 -また、うまく機能する良いものはないと読みました。私は個人的にこのphpmysqldumpのみを使用しました作成したバックアップを使用してデータベースを復元しようとすると、mysql エラーが発生します。ダンプ ファイル内のクエリも、PhpMyAdmin のエクスポート モジュールによって作成されたものとは多少異なります。また、他のいくつかの無料のユーザー提供の PHP クラスも確認しました。それらのほとんどは InnoDb サポートをサポートしていないように見えるため、外部キー制約がデータベースに存在する場合、エクスポートには存在しません。
質問 - PhpMyAdmin 自体のエクスポート機能が個別に存在する場合、私にとっては解決策になると思います。このような安定したライブラリを知っている人はいますか?