ウェブサイト検索

Debian 12 に最新バージョンの phpMyAdmin をインストールして保護する方法


このチュートリアルはこれらの OS バージョン用に存在します

  • Debian 12 (本の虫)
  • Debian 11 (ブルズアイ)

このページでは

  1. 前提条件
  2. はじめる
  3. LAMPサーバーのインストール
  4. phpMyAdminのインストールと設定
  5. phpMyAdmin 管理者ユーザーの作成
  6. phpMyAdmin 用に Apache を構成する
  7. phpMyAdminにアクセスする
  8. 安全なphpMyAdmin
  9. phpMyAdminを確認する
  10. 結論

phpMyAdmin は、MySQL および MariaDB データベースの管理に使用される無料の Web ベースの管理ツールで、Debian Linux システムで広く利用されています。データベースと対話するための使いやすいインターフェイスを提供し、ユーザーはコマンド ラインを使用せずに SQL クエリの実行、データベース テーブルの管理、データのインポートとエクスポート、さまざまなデータベース設定の構成を行うことができます。 Debian Linux では、phpMyAdmin は LAMP (Linux、Apache、MySQL/MariaDB、PHP) スタックと一緒にインストールされることが多く、管理者や開発者がより視覚的かつ組織的な方法でデータベース操作を処理しやすくなります。

このチュートリアルでは、Debian 12 に phpMyAdmin データベース管理ツールをインストールして保護する方法を説明します。

前提条件

  • Debian 12 を実行しているサーバー。
  • root パスワードはサーバー上で構成されます。

はじめる

開始する前に、システム パッケージを最新バージョンに更新することをお勧めします。次のコマンドを使用してすべてのパッケージを更新できます。

apt update -y

システムが更新されたら、次のステップに進むことができます。

LAMPサーバーのインストール

phpMyAdmin は、Web サーバー上で実行される PHP ベースのアプリケーションです。したがって、サーバーに LAMP サーバーをインストールする必要があります。次のコマンドを使用してインストールできます。

apt install apache2 mariadb-server libapache2-mod-php php-cli php-mysql php-zip php-curl php-xml php-mbstring php-zip php-gd unzip -y

すべてのパッケージがインストールされたら、次のステップに進むことができます。

phpMyAdminのインストールと設定

まず、次のコマンドを使用して、公式 Web サイトから phpMyAdmin の最新バージョンをダウンロードします。

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

ダウンロードが完了したら、次のコマンドを使用してダウンロードしたファイルを解凍します。

unzip phpMyAdmin-5.2.1-all-languages.zip

次に、次のコマンドを使用して、抽出したディレクトリを /usr/share に移動します。

mv phpMyAdmin-5.2.1-all-languages /usr/share/phpmyadmin

次に、次のコマンドを使用して必要なディレクトリを作成します。

mkdir -p /var/lib/phpmyadmin/tmp

次に、phpMyAdmin ディレクトリに適切な所有権を設定します。

chown -R www-data:www-data /var/lib/phpmyadmin

次に、phpMyAdmin サンプル構成ファイルをコピーします。

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

次に、pwgen をインストールし、次のコマンドで秘密キーを生成します。

apt-get install pwgen -y
pwgen -s 32 1

出力:

pau9t1SG6lmaeCFxKqeeaY5N4erIa25K

次に、config.inc.php ファイルを編集して構成します。

nano /usr/share/phpmyadmin/config.inc.php

秘密キーを定義し、次の行のコメントを解除します。

$cfg['blowfish_secret'] = 'pau9t1SG6lmaeCFxKqeeaY5N4erIa25K'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

完了したら、ファイルを保存して閉じます。

phpMyAdmin 管理者ユーザーの作成

phpMyAdmin を通じてデータベースを管理するための別のユーザーを作成することを常にお勧めします。

まず、次のコマンドを使用して、phpMyAdmin テーブルを MariaDB データベースにインポートします。

mysql < /usr/share/phpmyadmin/sql/create_tables.sql

次に、次のコマンドを使用して MariaDB シェルに接続します。

mysql

接続したら、次のコマンドを使用して、必要なすべての権限を phpmyadmin データベースに付与します。

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';

次に、次のコマンドを使用して管理者ユーザーを作成します。

MariaDB [(none)]> CREATE USER myadmin;

次に、次のコマンドを使用して、管理者ユーザーにすべての権限を付与します。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

次に、次のコマンドを使用して権限をフラッシュし、MariaDB シェルを終了します。

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

完了したら、次のステップに進むことができます。

phpMyAdmin 用に Apache を構成する

次に、phpMyAdmin 用の Apache 仮想ホスト構成ファイルを作成する必要があります。次のコマンドを使用して作成できます。

nano /etc/apache2/conf-available/phpmyadmin.conf

次の行を追加します。

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/phpmyadmin/htpasswd.setup
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

完了したらファイルを保存して閉じ、次のコマンドを使用して phpMyAdmin 構成ファイルを有効にします。

a2enconf phpmyadmin.conf

次に、Apache サービスをリロードして変更を適用します。

systemctl reload apache2

次のコマンドを使用して、Apache サービスのステータスを確認できます。

systemctl status apache2

次の出力が表示されるはずです。

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-08-25 11:28:21 UTC; 5s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 23021 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 23031 (apache2)
      Tasks: 6 (limit: 2341)
     Memory: 14.6M
        CPU: 89ms
     CGroup: /system.slice/apache2.service
             ??45031 /usr/sbin/apache2 -k start
             ??45032 /usr/sbin/apache2 -k start
             ??45033 /usr/sbin/apache2 -k start
             ??45034 /usr/sbin/apache2 -k start
             ??45035 /usr/sbin/apache2 -k start
             ??45036 /usr/sbin/apache2 -k start

Sun 25 11:28:21 debian systemd[1]: Starting The Apache HTTP Server...

phpMyAdminにアクセスする

この時点で、phpMyAdmin がインストールされ、設定されています。次に、Web ブラウザを開き、URL http://your-server-ip/phpmyadmin を使用して phpMyAdmin にアクセスします。 phpMyAdmin ログイン ページが表示されるはずです。

管理者のユーザー名とパスワードを入力し、[Go] ボタンをクリックします。次のページに phpMyAdmin ダッシュボードが表示されます。

安全なphpMyAdmin

phpMyAdmin を 2 要素認証で保護することをお勧めします。これは、.htaccess の認証および認可機能を使用して行うことができます。

まず、phpMyAdmin 構成ファイルを編集します。

nano /etc/apache2/conf-available/phpmyadmin.conf

次のサーバー ブロックに「AllowOverride All」行を追加します。

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All

    <IfModule mod_php5.c>

完了したらファイルを保存して閉じ、Apache サービスを再起動します。

systemctl restart apache2

次に、.htaccess ファイルを作成し、Apache 認証タイプを定義します。

nano /usr/share/phpmyadmin/.htaccess

次の行を追加します。

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/share/phpmyadmin/.htpasswd
Require valid-user

ファイルを保存して閉じてから、次のコマンドを使用してユーザーを作成します。

htpasswd -c /usr/share/phpmyadmin/.htpasswd secureuser

以下に示すように、パスワードを設定するように求められます。

New password: 
Re-type new password: 
Adding password for user secureuser

phpMyAdminを確認する

この時点で、phpMyAdmin は追加の認証によって保護されます。これを確認するには、Web ブラウザを開き、URL http://your-server-ip/phpmyadmin を使用して phpMyAdmin にアクセスします。以下に示すように、追加のユーザー名とパスワードの入力を求められます。

ユーザー名とパスワードを入力すると、通常の phpMyAdmin ログイン ページにリダイレクトされます。

結論

おめでとう! Debian 12 に phpMyAdmin が正常にインストールされ、保護されました。これで、Web ブラウザから phpMyAdmin を探索し、データベースを管理できるようになります。

関連記事: