9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

php もしくは Perl でMySQLのdumpデータを取得する

Posted at

データベース名、ユーザー名、パスワードはわかっているのに、SSH接続できない。

(クライアントが付き合っていたウェブ制作者と契約が切れた、連絡がつかない、など)

しかし、CMSの現状調査や移行作業のために、どうしてもMySQLのdumpデータがほしい。

そんなシチュエーションになった時に、やむを得ずphpやPerlを利用して取得したことがあったため、メモ書き程度に残しておきます。

(やってることは単純で、関数を利用してmysqldumpコマンドを叩いているだけです)

phpでMySQLのdumpデータを取得

以下のファイルを仕込んで、ブラウザからアクセス。

dump.php

<?php
$cmd = "mysqldump -u hogehoge -ppassword dbname > mysql.dump";
shell_exec($cmd);
print "dump complete";
?>

Perl でMySQLのdumpデータを取得

以下のファイルを仕込んで、ブラウザからアクセス。
アクセスするときは、CGIのパーミッションを実行可能に。

dump.cgi

# !/usr/bin/perl

$cmd = "mysqldump -u hogehoge -ppassword dbname > mysql.dump";
system($cmd);
print "Content-type:text/html\n\n";
print "dump complete";

注意

hogehogeはMySQLのユーザー名。
passwordはMySQLのパスワード。
dbnameはデータベース名。
-p と password は、空白を開けずにくっつけて記述します。

phpの shell_exec関数、Perlのsystem関数は、使い方によっては危険を伴うため、禁止しているホスティングサービスもあるでしょう。

目的を達成したら、すみやかにdumpデータ、スクリプトともに削除しておいたほうが良いです。アクセスがあるたびにdumpを取得してしまいます。

mysqldumpのオプションなどは MySQLのマニュアルを
shell_exec 関数の詳細は [phpのマニュアルを] (http://php.net/manual/ja/function.shell-exec.php)
Perl の system 関数の詳細は Perlのドキュメントを
ご参照ください。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?