Ubuntu 18.04 サーバー / phpMyAdmin のインストール方法

Ubuntu 18.04 サーバーに phpMyAdmin をインストールするには、Apache、PHP、MySQL または MariaDB を準備し、phpmyadmin パッケージをインストールしてデータベースアカウントでログインします。インストール前に、管理ツールが外部に公開されないようにアクセス経路を制限し、データベース root の認証設定を変更しないでください。

インストール前に確認すること

phpMyAdminは、ウェブブラウザを通じてMySQLまたはMariaDBのデータベースやテーブルを管理するためのツールです。この記事では、既存のUbuntu 18.04サーバーでApacheを使用する場合について説明します。別のウェブサーバーやデータベースサーバーを使用している場合や、Nginxを使用している場合は、接続経路や設定が異なります。

Ubuntu 18.04 LTSの標準セキュリティメンテナンスは2023年5月に終了しました。既存のシステムについては、サポートされているUbuntuバージョンへのアップグレードを推奨します。すぐにアップグレードできない場合は、Ubuntu Proのセキュリティメンテナンスが適用されているか、およびphpMyAdmin、PHP、データベースパッケージの更新範囲を確認してください。詳細については、Ubuntuセキュリティメンテナンスガイドを参照してください。

以下の例では、sudo 権限があり、Apache、PHP、および MySQL または MariaDB がすでにインストールされており、SSH 経由でサーバーにアクセスできることを前提としています。インストール前にデータベースをバックアップし、パッケージリポジトリや既存のサイト構成を確認してください。Apache の設定はインストール中に自動的に適用される場合があるため、まずファイアウォールやプライベートネットワークを使用して外部からのアクセスを制限してください。

Apache における管理パスの制限

以下の例では、Apache に直接接続し、サーバーへのローカル接続のみを許可する方法を示します。まず、ファイル /etc/apache2/conf-available/phpmyadmin-local.conf を作成し、以下の内容を保存します。

<Location /phpmyadmin>
    Require local
</Location>

設定を有効にした後、構文を確認し、正常に通過した場合のみ Apache をリロードしてください。

sudo a2enconf phpmyadmin-local
sudo apache2ctl configtest

Syntax OK が表示されたら、次のコマンドを実行してください。エラーがある場合は、設定を修正して再度確認してください。

sudo systemctl reload apache2

この設定は例のパスに適用されます。他のエイリアスやバーチャルホストがある場合は、それらのパスも確認してください。リバースプロキシが前にある場合、Apache はプロキシのアドレスをクライアントアドレスとして認識する可能性があるため、この例だけではアクセス制限の保証はできません。信頼されたプロキシやファイアウォールによる実際のクライアントアドレスの扱いを個別に確認してください。Apache の アクセス制御ドキュメント で Require ディレクティブを確認できます。

phpMyAdmin のインストール

パッケージリストを更新してインストールしてください。パッケージの入手可能性やバージョンは、リポジトリやセキュリティ保守の設定によって異なる場合があります。

sudo apt update
sudo apt install phpmyadmin

インタラクティブなインストール画面が表示されたら、次の項目を確認してください。

  1. Webサーバー選択画面で、Apache2を選択してください。続行する前に必ずチェックされていることを確認します。単にEnterキーを押すだけでは項目が選択されない場合があります。
  2. dbconfig-commonの設定について尋ねられた場合、phpMyAdminの追加機能用にデータベースを構成したい場合は、[Yes]を選択してください。このデータベースは、管理しているアプリケーションデータベースとは異なります。既存の設定を自分で管理する予定がある場合は、[No]を選択できます。
  3. パスワードを要求する画面で、表示されたアカウントと目的を確認し、安全なパスワードを入力してください。セットアッププロセス中に必要なデータベース管理者認証は、既存サーバーの認証方式によって異なる場合があります。

インストール後、設定ファイルとApacheサービスを確認してください。Ubuntuパッケージの設定は主に/etc/phpmyadminにあり、パッケージの構成によって異なる場合があります。

ls /etc/phpmyadmin
systemctl status apache2 --no-pager

SSHトンネル経由でアクセス

管理者PCでSSHクライアントを開き、次のコマンドを実行します。userとserverを実際のSSHアカウントとサーバーアドレスに置き換えてください。これにより、管理者PCのポート8080がサーバーのローカルポート80に接続され、SSH接続が維持されている間使用することができます。

ssh -L 127.0.0.1:8080:127.0.0.1:80 user@server

同じPCのブラウザでhttp://127.0.0.1:8080/phpmyadminを開きます。ブラウザとSSHクライアントは同じPC上で実行される必要があり、サーバー上のApacheはローカルポート80でそのパスを提供している必要があります。ログイン画面が表示されたら、許可されたデータベースのユーザー名とパスワードを入力してください。SSHセッションを終了すると、トンネルも閉じられます。

環境がHTTPS経由で直接アクセスするように構成されている場合、有効なTLS証明書と別のアクセス制限が必要です。ファイアウォールやApacheで許可されたIPを実際の管理者アドレスに従って設定し、許可されたアドレスと許可されていないアドレスの両方からアクセス結果を確認してください。管理ページをインターネット全体に公開しないことを推奨します。

ログインアカウントと権限

phpMyAdminのログインはMySQLまたはMariaDBアカウントを使用して認証されます。操作に必要なデータベースおよび操作のみの権限を持つ専用アカウントを使用してください。アカウントのホストと権限は、実際のデータベースサーバーの設定と一致する必要があります。ファイルをアップロードしたりデータを変更したりする前に、対象とバックアップを再確認してください。

Linuxのrootアカウントとデータベースのrootアカウントは異なります。データベースのrootがローカルソケット認証に設定されている場合、Webログインには使用できない可能性があります。システムテーブルを直接変更したり、root認証プラグインを空にすることで解決しようとしないでください。必要な権限を持つ別のアカウントを作成し、そのデータベース製品のアカウント管理ドキュメントに従ってください。

接続できない場合

  • 403 Forbidden: アクセス制限が適用されているか、SSHトンネルを使用しているか確認してください。また、プロキシとApacheに認識されているクライアントアドレスも確認してください。
  • 404 Not Found: インストール時に Apache2 が選択されていること、そして phpMyAdmin の Apache 設定が有効になっていることを確認してください。他の仮想ホストやエイリアスを使用している場合は、それらの設定も確認してください。
  • ログイン失敗: データベースのユーザー名、パスワード、接続ホスト、および権限を確認してください。Web サーバーアカウントや SSH アカウントは、データベースアカウントと異なる場合があります。
  • PHP ページエラー: Apache と PHP の統合、必要な PHP 拡張機能、および Apache のエラーログを確認してください。インストールおよび設定パスは、使用しているディストリビューションパッケージによって異なる場合があります。

設定変更を元に戻す必要がある場合は、既存のバックアップから復元し、構文を再確認してください。この記事でローカル制限設定を無効にすると、他の設定により管理パスが外部アクセスにさらされる可能性があるため、まず代替のアクセス制御が適用されていることを確認してください。phpMyAdminのインストールおよびセキュリティ設定については、公式インストールドキュメントを参照してください。