web-dev-qa-db-ja.com

mysqldumpなしでリモートデータベースをダンプする方法

シェルスクリプトを使用して、リモートでホストされているサイトのデータベースを定期的にダンプしたいのですが。残念ながら、サーバーはかなり厳しくロックされており、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ファイルを編集する必要がないソリューションにも興味があります。

8
deceze

Sshトンネルを設定して、ローカルマシンでmysqldumpを使用できます。

ssh -f -L 3306:localhost:3306 user@remoteserver -N
mysqldump -P 3306 -h localhost -u dbuser dbname
15
chmeee

http://sypex.net/en/ -このスクリプトをサーバーにアップロードした後、データベースのバックアップに使用できます。非常に便利で迅速

1

ウェブサーバーに this スクリプトをアップロードし(少なくともFTPアクセスが可能であることを願います)、スクリプトを起動し、データベース名/ホスト(「別のサーバー」のアドレス)/ユーザー名/パスワードを指定して、データベースを任意の場所にダンプします。あなたが望む場所...

0
Sergey

サーバーがWebサーバーの場合は、PHPスクリプトを使用して、データベースを画面にダンプします。バックアップサーバーに、cronを配置して、ダンプページを取得します。その後、データベースは、 HTTPによるバックアップサーバー。

セキュリティを忘れないでください:誰でもあなたの基地を捨てることができます。パスワード、またはIP制限を入力してください...

0
Dom