シェルスクリプトを使用して、リモートでホストされているサイトのデータベースを定期的にダンプしたいのですが。残念ながら、サーバーはかなり厳しくロックされており、mysqldump
がインストールされていないため、バイナリファイルは通常のユーザーやホームディレクトリでは実行できないため(自分で「インストール」することはできません)、データベースは稼働しています別のサーバーなので、ファイルを直接取得することはできません。
私ができる唯一のことは、SSH経由でWebサーバーにログインし、mysql
コマンドラインクライアントを使用してデータベースサーバーへの接続を確立することです。内容をSQL形式でファイルmysqldump
にダンプするにはどうすればよいですか?
ボーナス:可能であれば、SSH接続の最後にコンテンツを直接ダンプするにはどうすればよいですか?
以下に提案するSSHトンネルのアイデアは気に入っていますが、二重にトンネルする必要があります。
localhost -> remote web server -> remote database server
これは大丈夫です:
$ ssh -f -L 3306:mysql.example.com:3306 [email protected] -N
ただし、mysqlにログインしようとすると失敗します。
$ mysqldump -P 3306 -h localhost -u user -p db
Enter password:
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost'
(using password: YES) when trying to connect
ユーザーの資格情報は'user'@'mysql.example.com'
であると想定しています。 「実際の」ホストの代わりにそれを使用するように調整するにはどうすればよいですか?
さて、127.0.0.1 mysql.example.com
をhostsファイルに追加し、mysqldump -P 3306 -h mysql.example.com -u user -p db
経由で接続することで機能しました。問題は解決された!ただし、hostsファイルを編集する必要がないソリューションにも興味があります。
Sshトンネルを設定して、ローカルマシンでmysqldump
を使用できます。
ssh -f -L 3306:localhost:3306 user@remoteserver -N
mysqldump -P 3306 -h localhost -u dbuser dbname
http://sypex.net/en/ -このスクリプトをサーバーにアップロードした後、データベースのバックアップに使用できます。非常に便利で迅速
ウェブサーバーに this スクリプトをアップロードし(少なくともFTPアクセスが可能であることを願います)、スクリプトを起動し、データベース名/ホスト(「別のサーバー」のアドレス)/ユーザー名/パスワードを指定して、データベースを任意の場所にダンプします。あなたが望む場所...
サーバーがWebサーバーの場合は、PHPスクリプトを使用して、データベースを画面にダンプします。バックアップサーバーに、cronを配置して、ダンプページを取得します。その後、データベースは、 HTTPによるバックアップサーバー。
セキュリティを忘れないでください:誰でもあなたの基地を捨てることができます。パスワード、またはIP制限を入力してください...