[OCI] Computeインスタンス上にphpMyAdminをインストールして、自宅からブラウザ経由でMySQL DBシステムにアクセスしてみた


はじめに

OCIのMySQL DBシステムは、プライベート・エンドポイントのみを持ち、グローバルIPアドレスを持たないため、パブリック・サブネット上にある仮想マシン経由でアクセスする必要があります。

そこで、パブリック・サブネット上に作成したComputeインスタンスにphpMyAdminをインストールし、自宅からブラウザ経由でMySQL DBシステムにアクセスする環境を構築してみました。

注意:今回の構成ではSSL通信の設定はしておりませんので、機密データを扱う場合には、SSL通信の設定を行う、VPN経由でアクセスするなどを検討してください。

0.事前準備

こちらの記事を参考にして、VCNを構成します。

[OCI] OCIのネットワークを構成する際に手戻りの少ない手順を考えてみる(初心者向け)

MySQL DBシステムは、こちらの記事のようにVCN内のプライベート・サブネット(Subnet2)に作成し、同じVCN内のパブリック・サブネット(Subnet1)にphpMyAdminを動作させるComputeインスタンス(Oracle Linux 7.8)を作成します。

[OCI] Computeインスタンス上にNode.jsのWebアプリケーション環境を構成して、MySQL Database ServiceのDBシステムにアクセスしてみた

また、Computeインスタンスに適用するネットワーク・セキュリティ・グループに、インターネット側からのTCP 80番ポートへのアクセスを許可するセキュリティ・ルールを追加しておきます。
不正アクセスを防ぐため、特定のグローバルIPアドレスからのアクセスを許可することをお勧めします。

1.タイムゾーンとロケールの設定

sudo timedatectl set-timezone Asia/Tokyo
sudo localectl set-locale LANG=ja_JP.utf8

2.MySQL Clientのインストール

sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum install -y mysql-community-client

3.PHP、Apacheのインストール

sudo yum install -y oracle-php-release-el7
sudo yum install -y php php-mysqlnd php-json php-gd php-mbstring  php-xml php-intl

4.Composerのインストール

こちらのページの手順に従って、composerをインストールします。
https://getcomposer.org/download/

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --filename composer
php -r "unlink('composer-setup.php');"

5.twigのインストール

php composer require "twig/twig:^2.0"

6. ApacheとPHPの連携設定

sudo vi /etc/httpd/conf/httpd.conf

以下の内容をファイルの末尾に追加して保存します。

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

7.firewalldの設定(HTTP/TCP80を許可)

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all --zone=public

8.SELinuxの設定変更

sudo setenforce 0

9.SELinuxの設定ファイルの変更

sudo vi /etc/selinux/config

SELINUX=enforcing
の部分を
SELINUX=permissive
に変更します

10.phpMyAdminのダウンロードと解凍

wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip

unzip phpMyAdmin-5.0.4-all-languages.zip

11.解凍したディレクトリを/usr/share/phpmyadminに移動

sudo mv phpMyAdmin-5.0.4-all-languages /usr/share/phpmyadmin

12.phoMyAdmin用のtmpディレクトリを作成し、所有者を変更

sudo mkdir -p /usr/share/phpmyadmin/tmp/
sudo chown -R apache:apache /usr/share/phpmyadmin/tmp/

13.phpMyAdminの設定ファイルを作成します。

config.sample.inc.phpをコピーして、phpMyAdminの設定ファイル config.inc.php を作成します。

sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

14.作成したphpMyAdminの設定ファイルを編集します。

sudo vi /usr/share/phpmyadmin/config.inc.php

この部分を変更します。

/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

接続するMySQL DBシステムのエンドポイントに合わせて、以下のように変更します。

/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'mysql1.subnet2.vcn1.oraclevcn.com';
$cfg['Servers'][$i]['user'] = 'admin';
$cfg['Servers'][$i]['password'] = 'Demo#1Demo#1';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

15.phpMyAdmin用のApacheの設定ファイルを作成します。

sudo vi /etc/httpd/conf.d/phpmyadmin.conf

以下の内容を入力して、ファイルを保存します。
"XXX.XXX.XXX.XXX"の部分は、phpMyAdminにアクセスできるグローバルIPアドレスを指定します。
私はプロバイダから自宅のルータに付与されているIPアドレスを指定しました。

# Apache configuration for phpMyAdmin
Alias /phpMyAdmin /usr/share/phpmyadmin/ 
Alias /phpmyadmin /usr/share/phpmyadmin/ 
 
<Directory /usr/share/phpmyadmin/> 
  AddDefaultCharset UTF-8 
  #許可するグローバルIPアドレスを指定
  Require ip xxx.xxx.xxx.xxx 
</Directory>

16.Apacheの起動

systemctlコマンドで、Apacheを起動します。

sudo systemctl start httpd.service

17.Apacheの自動起動設定

systemctlコマンドで、OS起動時にApacheが自動的に起動するように設定します。

sudo systemctl enable httpd.service

18.ブラウザでphpMyAdminにアクセス

以上でphpMyAdminのインストールと設定が完了したので、ブラウザ経由でアクセスしてみます。
phpMyAdminをインストールしたComputeインスタンスのグローバルIPアドレスの後ろに"/phpmyadmin/"を
付けてアクセスします。

http://<ComputeインスタンスのグローバルIPアドレス>/phpmyadmin/


無事、phpMyAdminのログインページが表示されましたので、MySQL DBシステムの管理者ユーザ(今回はadmin)でログインしてみます。

無事ログインできました。

多言語対応版をインストールしたので、言語設定(上の画面のLanguageの部分)を変えれば、日本語表示になります。

これで、ターミナルを立ち上げなくても、ブラウザがあれば自宅からMySQL DBシステムにアクセスできるようになりました。

まとめ

今回は最新版のphpMyAdmin 5.0.4をComputeインスタンス上のOracle Linux 7.8にインストールし、MySQL DBシステムにアクセスしてみました。
かなり昔にphpMyAdminを使っていましたが、新しいバージョンも見た目はあまり変わりませんね。
細かいところはまだ触っていないのでわかりませんが、久しぶりに色々触ってみたいと思います。