
phpMyAdmin を自分で VPS 上にインストールする手順を説明します。
(yum のようなパッケージ管理ツールは使わない方法です)
目次
1. phpMyAdmin とは?
phpMyAdmin は ウェブブラウザ上から MySQL (と MariaDB) を管理するためのソフトウェアです。PHPで記述されており、無料で使えます。
MySQL とは データベース管理システム(厳密にはリレーショナルデータベース管理システム) の1つです。
この MySQL を操作する一番原始的な方法は、コマンドラインからコマンドを実行する方法です(これには、mysql
コマンドを使います)。

しかし、正直なところこれは面倒です。どんなコマンドでどんな操作ができるか分かっている人であってもストレスが溜まるでしょう。
そこで、phpMyAdmin の出番です。phpMyAdmin を導入すれば、ウェブブラウザから分かりやすい画面を通して、MySQLに対して操作ができます。
これであれば、作業がかなりラクになります。
インストールする場所について
当然ですが、この phpMyAdmin は操作対象となる MySQLサーバーに接続します。そして、phpMyAdmin はウェブサイトなので、動かすためにはウェブサーバー (Apache や nginx)も必要です。この MySQLサーバーとウェブサーバーは、別々のサーバーマシン上に存在していてもよいのですが、その場合は ウェブサーバーから MySQLサーバーにアクセスできるように設定しておく必要があります。かといって、誰でもアクセスできるようにしておくのはセキュリティの観点から見て問題があるため、必要最低限のアクセスのみ許可するようにしておきます。
データベースについては、以下の記事も参考にして下さい。
2. 今回の環境
- VPS サーバー(OSは CentOS 7)に、ウェブサーバー(Apache)と MySQL(または MariaDB) がインストールされており、既に稼働している。
example.com
という独自ドメインを持っている。- phpMyAdminのウェブサイトとして公開する URLは、
http(s)://db999.example.com/
とする。- db999 の部分は、できるだけ推測されにくい文字列にしましょう。
- phpMyAdminのウェブサイトのディレクトリは、
/var/www/phpmyadmin/
とする。ここが、上のURLで公開されるサイトの DocumentRoot になる。
3. 作業手順
まず、VPS にログインします。
$ ssh foo@www.example.com
phpMyAdminをダウンロード
phpMyAdmin を配置するディレクトリに移動します。
$ cd /var/www
git
コマンドを使って、phpMyAdmin のデータをダウンロードします。
$ git clone https://github.com/phpmyadmin/phpmyadmin.git
今いるディレクトリ内に、phpmyadmin
というディレクトリができます。ここが、DocumentRoot になります。
次に、phpmyadmin
ディレクトリに移動して composer
コマンドを実行し、依存しているパッケージを追加します。
$ cd phpmyadmin
$ composer update
ここで追加ディレクトリ・ファイルの所有者/所有グループ/パーミッションを変更しておきます。
$ cd ..
$ chown -R apache:apache phpmyadmin
$ chmod -R a-x,go-wx,ug+w,a+rX phpmyadmin
git
コマンドや composer
コマンドがインストールされていない場合は、以下のコマンドを実行してインストールしておきます。
$ sudo yum install git
$ sudo yum install composer
phpMyAdminを設定する
設定ファイルをコピーして作成します。
$ sudo cp -p config.sample.inc.php config.inc.php
設定ファイルを編集します。
$ sudo vim config.inc.php
$cfg['blowfish_secret']
に対して、ランダムな文字列をセットします。
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Online tool to generate and check bcrypt hashed passwords. といったページで生成するとラクです。念の為、生成した文字列の一部を手動で変更して使用しましょう。
例えば、こんな感じになります。
$cfg['blowfish_secret'] = 'eoLwslZ,Vbnf7Q9[e-r860M[]7;}Fkn-'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
ウェブサイトとしてアクセスできるように、ウェブサーバーを設定する
では、/var/www/phpmyadmin
をドキュメントルートとしたウェブサイトを公開するために、ウェブサーバー(今回は Apache)を設定します。
/etc/httpd/conf.d/vhost.conf
ファイルを変更します(なければ作成します)。
$ sudo vim /etc/httpd/conf.d/vhost.conf
例えば以下を追記します。
<VirtualHost *:80>
DocumentRoot /var/www/phpmyadmin
ServerName db999.example.com
ErrorLog logs/db999_example_com_error_log
CustomLog logs/db999_example_com_access_log combined
LogLevel warn
<Directory "/var/www/phpmyadmin">
AllowOverride all
</Directory>
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
</VirtualHost>
まだここでは、Apache に対してこの設定を読み込ませませんが、この記述が文法的に間違っていないかはチェックしておきましょう。以下のコマンドでチェックできます。
$ sudo httpd -t
なにか間違っていたら修正しておきましょう。
DNS の設定
今回の場合、db999.example.com
というホスト名で phpMyAdminのウェブサイトを公開するわけですが、この db999.example.com
は VPS を指しているでしょうか?
例えば、
$ ping db999.example.com
と実行し、その結果の中に VPS のIPアドレスが表示されるか? ということです。もし違う IPアドレスが表示された場合は、DNS のレコードを変更もしくは追加しなければいけません。
具体的には、example.com
のDNS情報を管理させているネームサーバーにおいて、以下の情報を登録しましょう。
- レコードの種類: A
- ホスト名: db999
- IPアドレス: VPSのIPアドレス
反映されるまでに少し時間が掛かります。
反映されたら、ウェブブラウザで http://db999.example.com
にアクセスしてみましょう。
このように、phpMyAdminのサイトが表示されるはずです。MySQL に設定してあるユーザー名とパスワードを入力すればログインもできます。
但し、現時点では http
でのアクセスなので通信内容が暗号化されていません。ログインする際に入力する「ユーザー名」「パスワード」も、データベースの内容も暗号化されないのです。中間者攻撃 (man-in-the-middle attack、MITM) をされた場合、内容が盗聴されてしまいます。
これを避けるため、SSLでアクセスできるようにしましょう。
SSL の設定(SSL証明書の生成とウェブサーバーでの設定)
ここでは、Let’s Encrypt を利用して SSL証明書を作成する例を説明します。
既に Let’s Encrypt を利用している場合はやる必要がありませんが、そうでない場合は、certbot
というツールをインストールします。
$ yum install certbot
まず、Apache を停止します。
$ systemctrl stop httpd
SSL証明書は以下のコマンドで作成(または更新)します。(あくまで例です)
$ certbot certonly \
--standalone \
-d example.com \
-d db999.example.com
メールアドレスなど聞かれましたら、指示に従って入力してください。
処理が終了したら、表示される中に、作成されたファイルのパスが記載されているはずですので確認します。このパスは後で使用します。
次に、そのウェブサーバーの設定ですが、/etc/httpd/conf.d/ssl.conf
にこのウェブサイトの情報を書き込みます。
$ vim /etc/httpd/conf.d/ssl.conf
ポイントは SSL証明書となるファイルの行です。先ほど作成(または更新)したファイルへのパスをセットします。
だいたい以下のような内容になります。
SSLCertificateFile /etc/letsencrypt/live/db999.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/db999.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/db999.example.com/chain.pem
では、もう一度 Apache の設定ファイルの文法チェックを行っておきましょう。
$ httpd -t
問題なければ、Apache を起動します。
$ systemctrl start httpd
この時点までこれば、ウェブブラウザで https://db999.example.com
にアクセスできるようになっているはずです。
4. http
用の設定は削除してよい
phpMyAdminサイトの場合、https
でのアクセスさえできてしまえば、http
の設定は削除することをお勧めします。
これは以下のような手順になります。
# db999.example.com に関する記述を削除(もしくはコメントアウト)する
$ vim /etc/httpd/conf.d/vhost.conf
### Apache を再起動する
$ systemctrl restart httpd
5. セキュリティを高める
データベースには機密情報も格納されることがあると思いますし、phpMyAdminサイトはセキュリティを高めておく必要があります。
上に書いた「http 用の設定は削除する」もその1つになりますが、その他にも、
- BASIC認証を導入する
- 使わない期間は、Apacheの設定をコメントアウトしてアクセスできないようにしておく
などの対策を取ることが重要です。
6. おわりに
phpMyAdmin のおかげで、MySQLのデータベース操作が格段にラクになります。MySQL を使っているのであれば、是非導入しましょう。
共用サーバーサービスでは、phpMyAdmin サイトが用意されていることも多いですが、このことからも、便利なツールであることが分かります。
おすすめのVPSサービスについては、以下のページも参考にしてください。