Debian 12 に最新バージョンの phpMyAdmin をインストールして保護する方法
このチュートリアルはこれらの OS バージョン用に存在します
- Debian 12 (本の虫)
- Debian 11 (ブルズアイ)
このページでは
- 前提条件
- はじめる
- LAMPサーバーのインストール
- phpMyAdminのインストールと設定
- phpMyAdmin 管理者ユーザーの作成
- phpMyAdmin 用に Apache を構成する
- phpMyAdminにアクセスする
- 安全なphpMyAdmin
- phpMyAdminを確認する
- 結論
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 を探索し、データベースを管理できるようになります。