基本的な使い方

VPS に phpMyAdmin をインストールする 手順

投稿日:2018年5月23日 更新日:

VPS に phpMyAdmin をインストールする手順

phpMyAdmin を自分で VPS 上にインストールする手順を説明します。
(yum のようなパッケージ管理ツールは使わない方法です)

1. phpMyAdmin とは?

phpMyAdmin は ウェブブラウザ上から MySQL (と MariaDB) を管理するためのソフトウェアです。PHPで記述されており、無料で使えます。

MySQL とは データベース管理システム(厳密にはリレーショナルデータベース管理システム) の1つです。

この MySQL を操作する一番原始的な方法は、コマンドラインからコマンドを実行する方法です(これには、mysql コマンドを使います)。

コマンドで操作(これは MariaDBです)
コマンドで操作(これは MariaDBです)

しかし、正直なところこれは面倒です。どんなコマンドでどんな操作ができるか分かっている人であってもストレスが溜まるでしょう。

そこで、phpMyAdmin の出番です。phpMyAdmin を導入すれば、ウェブブラウザから分かりやすい画面を通して、MySQLに対して操作ができます。

phpMyAdminの画面
phpMyAdminの画面

これであれば、作業がかなりラクになります。

インストールする場所について

当然ですが、この phpMyAdmin は操作対象となる MySQLサーバーに接続します。そして、phpMyAdmin はウェブサイトなので、動かすためにはウェブサーバー (Apache や nginx)も必要です。この MySQLサーバーとウェブサーバーは、別々のサーバーマシン上に存在していてもよいのですが、その場合は ウェブサーバーから MySQLサーバーにアクセスできるように設定しておく必要があります。かといって、誰でもアクセスできるようにしておくのはセキュリティの観点から見て問題があるため、必要最低限のアクセスのみ許可するようにしておきます。

データベースについては、以下の記事も参考にして下さい。

データベース(MySQL)とは?

2018.05.09

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! */

Blowfish password hash generator – Password tool といったページで生成するとラクです。念の為、生成した文字列の一部を手動で変更して使用しましょう。

例えば、こんな感じになります。

$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の画面が表示されました
phpMyAdminの画面が表示されました

このように、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サービスについては、以下のページも参考にしてください。

非公開: VPSのお勧めレンタルサーバー

2018.03.26

-基本的な使い方

執筆者:fitallright

関連記事

エックスサーバーでは、index.php よりも index.html が優先されます

エックスサーバーでの、index.html ファイルと index.php ファイルの取扱いについて説明します。優先順位の話になります。 目次1. 質問です。2. index.html と index …

Webサイトを公開するまでの流れ

Webサイトを公開するまでの流れを説明します。 目次1. ドメインを取得する2. サーバーを借りる3. Webサイトを作成する4. Webサイトを公開するおわりに 1. ドメインを取得する ドメインは …

【エックスサーバー】特定のフォルダ以下にアクセスを制限したFTPユーザーを作成する

エックスサーバーで、レンタルサーバー上の特定のディレクトリ(フォルダ)以下 にしかアクセスすることのできない FTPアカウントの追加方法 について説明します。 目次1. エックスサーバーの FTPアカ …

ConoHa API を利用してサーバーを再起動するシェルスクリプトを書く

VPS である ConoHa には、API が用意されています。Web のプロトコルである HTTPS (TLS/SSL) を使って、特定のサーバーに命令を送ることで、いろいろな操作を行うことができる …

VPS の初期設定 (ConoHa で CentOS 7 を使う)

ConoHa で VPS サーバーを追加した場合の初期設定について説明します。 あくまで一例です。 目次1. サーバーを追加する2. SSH でログインする3. ユーザーの追加4. sshd のポート …

ロリポップ!「スタンダードプラン」
さくらのレンタルサーバ「スタンダードプラン」