はじめに
Xserverにはお世話になっております!
さて、Xserverで個人的に残念なのが、データベースWEB管理ツールである、phpMyAdminが、現時点4.4.15.10で古いです。
詳細に調査したわけではありませんが、phpMyAdmin4.4.15.10でデータベースのコピー機能を利用しようとするとエラーとなってしまいます。どうもutf8mb4 の場合おかしくなるようです。エクスポート・インポートすれば大丈夫でした。(charset=utf8mb4,collation=utf8mb4_general_ci)
最初はphpMyAdminのソースコードを追おうと思いましたが、バージョンが低いこともあり、また自分でソースコードを置けばそれで使えるので、独自で、phpMyAdmin5.1.3をインストールしてみました。一応サポートにもダメもとで聞いてみましたが、新しくする予定は今のところないとのことでした。
私が使用しているXserverのサーバー番号は、10000番台で、昔と異なりDB・phpMyAdmin・ホスティングサーバーは、同じIPアドレスとなっているようです。
契約サーバーが、sv13xxxなら、管理URLは、https://phpmyadmin-sv13xxx.xserver.jp/ となります。
今回、pma5.example.com というサブドメインを作成し、そこに独自ソースコードをインストールして設置します。
また、phpMyAdmin をより便利に使用するため、専用データベースも作成します。
やったこと
準備
Xserver側で、phpMyAdmin用データベースを作成します。DB名の例)user_phpmyadmin
phpmyadmin 自体のDBユーザーと、管理したいDBユーザーは一致させておきます。もしphpmyadmin専用DBユーザーを作成したら、管理したいDBにも権限を与えておきます。
インストール
公式ドキュメントに従い、インストールします。
zipダウンロードでも良いですが、今回は、composer でインストールします。
comoserだとアップデートも簡単です。composer は独自にV2を使うように設定しています。
composer -V
Composer version 2.3.5 2022-04-13 16:43:00
個人の趣味で、public_html より上位にインストールして、public_html 配下にシンボリックリンクを作成して、公開します。
URLは、https://pma5.example.com/ となります。
# ドメインのディレクトリ。pma5サブドメインのドキュメントルートは、example.com/public_html/pma5
cd ~/example.com
# composer インストール
composer create-project phpmyadmin/phpmyadmin
# シンボリックリンク作成
cd ~/example.com/public_html
mv pma5 pma5_org # Xserverにサブドメイン追加時に作成されているオリジナルのディレクトリをバックアップ
ln -s pma5 ../phpmyadmin
https://pma5.example.com/ にアクセスし、ログイン画面が表示されれば正常です。
~example.com/phpmyadmin ディレクトリに、phpMyAdmin 5.1.3 がインストールされていました。
この後、ドキュメントに従いセキュリティ設定などの構成を行います。
https://pma5.example.com/setup にアクセスすると、WEB UI で設定できます。
この記事では、setupを使用せず、マニュアルで設定します。多くのサイトでも解説されているのでやったことだけ記載します。
設定
セキュリティ
今回は、サイト側のbasic認証、phpMyAdmin側のcookie認証、を使いましたが、お好みで。basic認証は無くてもよいかもしれませんが念のためです。
~example.com/phpmyadmin ディレクトリに、.htaccess を作成し、Basic認証を独自に設定します。(Xserverの管理パネルの「アクセス制限機能」は、public_html以下しか使えませんので、手動で作成します。)
<Files ~ "^(config\.inc\.php|\.htpasswd)$"> deny from all </Files> AuthUserFile "/home/testuser/example.com/.htpasswd" AuthName "Member Site" AuthType BASIC require valid-user
config.inc.php の編集
config.sample.inc.php をコピーし、config.inc.php を作成します。必要箇所を変更していきます。
blowfish_secretを設定
以下を使用しました。
$cfg['blowfish_secret'] = 'Q.-SU0C8UZSs4JIvKF}POEZ}BN09fxh7'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
DB情報設定と、phpMyAdminの設定
$i++;
/* 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;
/**
* phpMyAdmin configuration storage settings.
*/
/** 以下は、必須ではない。phpmyadminの各種追加機能を使用する際に必要 */
/* コメントを外していく */
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'xxxxxxxx'; // xserverで指定したuser_phpmyadminにアクセスできるユーザー
$cfg['Servers'][$i]['controlpass'] = 'zzzzzzzzzzzzzzzzzz';
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'user_phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// 以下アンコメントして、機能を有効化します。
// 表示テーマを設定できます。末尾に追加しました。
$cfg['ThemeDefault'] = 'bootstrap';
管理情報DBへのテーブル作成
user_phpmyadmin にはテーブルが無いので、作成します。
~/example.com/phpmyadmin/sql/create_table.sql を流します。
コマンドラインからでも、phpMyAdmin からでもインポートできます。
cd ~/example.com/phpmyadmin/sql
# user_padmin は、DBユーザー名
mysql -u user_padmin -p user_phpmyadmin< create_table.sql
改めてphpMyAdmin画面にアクセスし、以下の表示が消えていれば成功です。以下は未設定の状態です。
感想
インストールそのものは簡単でした。当たり前ですがセキュリティには気を付けたいですね。
解決したかったデータベースコピーもエラーなくできるようになりました!