インストール¶
phpMyAdmin は MySQL データベースサーバに特別なセキュリティをほどこすものではありません。phpMyAdmin を使ったとしても、MySQL データベースに適切なパーミッションを付与するのは、やはりシステム管理者の仕事です。ただし、その目的で phpMyAdmin の ユーザアカウント ページを使うことはできます。
Linux ディストリビューション¶
phpMyAdmin は多くの Linux ディストリビューションに含まれています。できればディストリビューションのパッケージを使用することをお勧めします。そちらはふつう、ディストリビューションとの統合が提供され、ディストリビューションからのセキュリティ更新を自動的に受けることができるからです。
Debian と Ubuntu¶
Debian と Ubuntu のほとんどのバージョンは phpMyAdmin パッケージを含んでいますが、設定ファイルは /etc/phpmyadmin
の中で管理されており、公式の phpMyAdmin のドキュメントといくつかの点で異なることがあります。特に、以下のような点です。
- ウェブサーバの設定 (Apache および lighttpd で動作)。
- dbconfig-common を使用して phpMyAdmin 環境保管領域 を作成すること。
- セットアップスクリプトの保護。 Debian、Ubuntu とその派生製品のセットアップスクリプト を参照してください。
Debian または Ubuntu パッケージのインストールに関する詳細は Wiki 内 にあります。
参考
詳しい情報は README.Debian にあります (パッケージの /usr/share/doc/phpmyadmin/README.Debian
としてインストールされます)。
OpenSUSE¶
OpenSUSE ではすでに phpMyAdmin パッケージがあり、 openSUSE Build Service からパッケージをインストールするだけです。
Gentoo¶
Gentoo は、ストックに近い設定と webapp-config
設定の両方で phpMyAdmin パッケージを提供しています。インストールするには emerge dev-db/phpmyadmin
を使用してください。
Mandriva¶
Mandriva は phpMyAdmin パッケージを contrib
ブランチで提供しており、通常の Control Center からインストールすることができます。
Fedora¶
Fedora は phpMyAdmin パッケージを提供していますが、設定ファイルは /etc/phpMyAdmin/
に保持されており、公式の phpMyAdmin ドキュメントとは異なる場合があることに注意してください。
Red Hat Enterprise Linux¶
Red Hat Enterprise Linux itself and thus derivatives like CentOS don't
ship phpMyAdmin, but the Fedora-driven repository
Extra Packages for Enterprise Linux (EPEL)
is doing so, if it's
enabled.
But be aware that the configuration file is maintained in
/etc/phpMyAdmin/
and may differ in some ways from the
official phpMyAdmin documentation.
Windows へのインストール¶
phpMyAdmin を Windows 上で利用できるようにするもっとも簡単な方法は、 XAMPP のような phpMyAdmin とデータベース、ウェブサーバを一緒に含むサードパーティ製品をインストールすることです。
それ以外の同様の選択肢は Wikipedia を参照してください。
Git からのインストール¶
Git からインストールするためには、いくつかのサポートアプリケーションが必要になります。
- Git <https://git-scm.com/downloads> _ でソースをダウンロードします。または最新のソースを Github <https://codeload.github.com/phpmyadmin/phpmyadmin/zip/master> _ から直接ダウンロードすることができます
- Composer
- Node.js (バージョン 10 以降)
- Yarn
現在の phpMyAdmin のソースを https://github.com/phpmyadmin/phpmyadmin.git
からクローンすることができます。
git clone https://github.com/phpmyadmin/phpmyadmin.git
加えて、 Composer を使用して依存するものをインストールする必要があります。
composer update
開発目的でなければ、次のように実行すると開発者ツールのインストールをスキップすることができます。
composer update --no-dev
最後に、 Yarn を使用して JavaScript の依存モジュールをいくつかインストールする必要があります。
yarn install --production
Composer を使用したインストール¶
phpMyAdmin は Composer tool を用いてインストールすることもでき、 4.7.0 からはデフォルトの Packagist リポジトリに自動的に反映されます。
注釈
Composer のリポジトリの内容は、リリースとは独立して自動的に生成されるため、必ずしもダウンロード版と 100% 同じとは限りません。しかし、機能的な違いはないでしょう。
phpMyAdmin をインストールするには、次のように実行するだけです。
composer create-project phpmyadmin/phpmyadmin
他にもリリース版を含む独自の Composer リポジトリを使用することもできます。 <https://www.phpmyadmin.net/packages.json> から利用することができます。
composer create-project phpmyadmin/phpmyadmin --repository-url=https://www.phpmyadmin.net/packages.json --no-dev
Docker を使用したインストール¶
phpMyAdmin には簡単に配布することができる Docker official image が付属しており、次のようにダウンロードすることができます。
docker pull phpmyadmin
phpMyAdmin サーバはポート80を待ち受けします。データベースサーバへのリンクを設定する方法は複数あり、データベースコンテナを phpMyAdmin の db
にリンクするDockerのリンク機能を使用したり (--link your_db_host:db
を指定)、環境変数で指定したりします (この場合、 phpMyAdmin コンテナがネットワーク経由でデータベースコンテナにアクセスできるように Docker でネットワークを設定する必要があります)。
Docker の環境変数¶
以下の環境変数を使用して phpMyAdmin のいくつかの機能を設定することができます。
-
PMA_ARBITRARY
¶ ログインフォームでデータベースサーバのホスト名を入力できるようにします。
-
PMA_HOST
¶ 使用するデータベースサーバのホスト名と IP アドレスです。
-
PMA_VERBOSE
¶ このデータベースサーバの詳細な名前です。
-
PMA_VERBOSES
¶ カンマ区切りのデータベースサーバの詳細な名前です。
注釈
PMA_VERBOSE
が空の場合のみ使用されます。
-
PMA_USER
¶ config 認証モード で使用するユーザ名です。
-
PMA_PASSWORD
¶ config 認証モード で使用するパスワードです。
-
PMA_PORT
¶ 使用するデータベースサーバのポート番号です。
-
PMA_ABSOLUTE_URI
¶ phpMyAdmin を利用できるようにするリバースプロキシの完全修飾パス (
https://pma.example.net/
) です。
-
PMA_QUERYHISTORYDB
¶ true に設定すると、 SQL 履歴が
$cfg['Servers'][$i]['pmadb']
に保存できるようになります。 false の場合、履歴はブラウザに保存され、ログアウト時に消去されます。
-
PMA_QUERYHISTORYMAX
¶ 整数に設定すると、履歴項目の数を制御します。
-
PMA_CONTROLHOST
¶ すると、 "phpMyAdmin 環境保管領域" データベースを格納するために使用される代替データベースホストを指します。
-
PMA_CONTROLUSER
¶ phpMyAdmin が "phpMyAdmin 環境保管領域" データベースで使用するユーザ名を定義します。
-
PMA_CONTROLPASS
¶ phpMyAdmin が "phpMyAdmin 環境保管領域" データベースで使用するためのパスワードを定義します。
-
PMA_CONTROLPORT
¶ 設定された場合、制御ホストに接続するための既定値 (3306) を上書きします。
-
PMA_PMADB
¶ 設定された場合、 "phpMyAdmin 環境保管領域" データベースで使用するデータベース名を定義します。設定しない場合、高度な機能はデフォルトで有効になりません。 ゼロ設定 機能でログインした場合には、ユーザが潜在的に有効化することができます。
注釈
推奨値: phpmyadmin または pmadb
-
HIDE_PHP_VERSION
¶ 定義すると、 PHP のバージョンを非表示にします (expose_php = Off)。任意の値を設定してください (HIDE_PHP_VERSION=true など)。
-
UPLOAD_LIMIT
¶ 設定されている場合、このオプションは apache および php-fpm のデフォルト値を上書きします (これにより、
upload_max_filesize
およびpost_max_size
の値が変更されます)。注釈
[0-9+](K,M,G) という書式で、デフォルト値は`2048K` です
-
MEMORY_LIMIT
¶ 設定すると、phpMyAdmin のメモリ制限
$cfg['MemoryLimit']
と PHP の memory_limit を上書きするようになります。注釈
書式は`[0-9+](K,M,G)` で、K はキロバイト、M はメガバイト、G はギガバイトを表し、 1K = 1024 バイトです。デフォルト値は 512M です。
-
MAX_EXECUTION_TIME
¶ 設定された場合、このオプションは phpMyAdmin の
$cfg['ExecTimeLimit']
と PHP の max_execution_time の最大実行時間 (秒) を上書きすることになります。注釈
書式は [0-9+] です。デフォルト値は`600` です。
-
PMA_CONFIG_BASE64
¶ 設定されている場合、このオプションは変数を base64 デコードした内容でデフォルトの config.inc.php を上書きします。
-
PMA_USER_CONFIG_BASE64
¶ 設定されている場合、このオプションは変数を base64 デコードした内容でデフォルトの config.user.inc.php を上書きします。
-
PMA_UPLOADDIR
¶ 設定された場合、このオプションは、インポートするためにファイルを保存できるパスを設定します (
$cfg['UploadDir']
)
-
PMA_SAVEDIR
¶ 設定された場合、このオプションはエクスポートされたファイルを保存するためのパスを設定します (
$cfg['SaveDir']
)
-
APACHE_PORT
¶ このオプションを設定すると、権限のないポートのような別のポートで Apache を実行したい場合に、デフォルトの Apache のポートを 80 から変更することができます。任意のポート値 (例: APACHE_PORT=8090) を設定することができます。
デフォルトでは クッキー認証モード が使用されますが、 PMA_USER
と PMA_PASSWORD
が設定された場合 config 認証モード に切り替わります。
注釈
ログインに必要な資格情報は MySQL サーバに保存されます。 Docker イメージの場合、さまざまな方法で設定できます (たとえば、 MySQL コンテナの起動時は MYSQL_ROOT_PASSWORD
)。 MariaDB コンテナ または MySQL コンテナ のドキュメントを確認してください。
設定のカスタマイズ¶
さらに、設定は /etc/phpmyadmin/config.user.inc.php
で調整できます。このファイルが存在する場合は、上記の環境変数から設定が生成された後に読み込まれるため、任意の設定変数を上書きできます。この設定は、 -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php 引数を使用して docker を呼び出すときにボリュームとして追加できます。
なお、提供された設定ファイルは Docker の環境変数 の後で適用されますが、任意の値を上書きできます。
例えば、 CSV エクスポートのデフォルトの動作を変更する場合は、以下の設定ファイルを使用してください。
<?php
$cfg['Export']['csv_columns'] = true;
Docker の環境変数 に書かれている環境変数を使用する代わりに、サーバ設定を定義することで利用することもできます。
<?php
/* Override Servers array */
$cfg['Servers'] = [
1 => [
'auth_type' => 'cookie',
'host' => 'mydb1',
'port' => 3306,
'verbose' => 'Verbose name 1',
],
2 => [
'auth_type' => 'cookie',
'host' => 'mydb2',
'port' => 3306,
'verbose' => 'Verbose name 2',
],
];
参考
設定オプションの詳細な説明は 設定 を参照してください。
Docker ボリューム¶
以下のボリュームを使用して、イメージの動作をカスタマイズすることができます。
/etc/phpmyadmin/config.user.inc.php
追加の設定に使用することができます。詳しくは前の節を参照してください。
/sessions/
セッションが保存されるディレクトリです。例えば サインオン認証モード を使用するときに共有したくなるかもしれません。
/www/themes/
phpMyAdmin がテーマを検索するディレクトリです。デフォルトでは、 phpMyAdmin に付属しているものだけが含まれていますが、 Docker ボリュームを利用して、追加の phpMyAdmin テーマ (カスタムテーマ を参照) を入れることができます。
Docker の例¶
phpMyAdmin を指定されたサーバに接続させるには、以下を使用してください。
docker run --name phpmyadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin:latest
phpMyAdmin を他のサーバにも接続させるには、以下を使用してください。
docker run --name phpmyadmin -d -e PMA_HOSTS=dbhost1,dbhost2,dbhost3 -p 8080:80 phpmyadmin:latest
任意のサーバオプションを使用する場合です。
docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -e PMA_ARBITRARY=1 phpmyadmin:latest
Docker を用いてデータベースコンテナをリンクすることもできます。
docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin:latest
追加の設定で実行する方法です。
docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin:latest
追加のテーマで実行します。
docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/custom/phpmyadmin/themeName/:/var/www/html/themes/themeName/ phpmyadmin:latest
docker-compose の使用¶
または、 <https://github.com/phpmyadmin/docker> の docker-compose.yml で docker-compose を使用することもできます。これにより、 phpMyAdmin を任意のサーバで実行できます。ログインページで MySQL/MariaDB サーバを指定できます。
docker-compose up -d
docker-compose を使用した設定ファイルのカスタマイズ¶
外部ファイルを使用して phpMyAdmin の設定をカスタマイズし、 volumes 設定項目を使用して渡すことができます。
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
environment:
- PMA_ARBITRARY=1
restart: always
ports:
- 8080:80
volumes:
- /sessions
- ~/docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
- /custom/phpmyadmin/theme/:/www/themes/theme/
参考
サブディレクトリの haproxy の背後で実行¶
サブディレクトリの Docker コンテナで実行されている phpMyAdmin を公開する場合は、リクエストを中継するサーバのリクエストパスを書き換える必要があります。
たとえば、 haproxy を使用すると、次のように実行できます。
frontend http
bind *:80
option forwardfor
option http-server-close
### NETWORK restriction
acl LOCALNET src 10.0.0.0/8 192.168.0.0/16 172.16.0.0/12
# /phpmyadmin
acl phpmyadmin path_dir /phpmyadmin
use_backend phpmyadmin if phpmyadmin LOCALNET
backend phpmyadmin
mode http
reqirep ^(GET|POST|HEAD)\ /phpmyadmin/(.*) \1\ /\2
# phpMyAdmin container IP
server localhost 172.30.21.21:80
traefik を使用する場合、次のようなものが機能するはずです。
defaultEntryPoints = ["http"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
regex = "(http:\\/\\/[^\\/]+\\/([^\\?\\.]+)[^\\/])$"
replacement = "$1/"
[backends]
[backends.myadmin]
[backends.myadmin.servers.myadmin]
url="http://internal.address.to.pma"
[frontends]
[frontends.myadmin]
backend = "myadmin"
passHostHeader = true
[frontends.myadmin.routes.default]
rule="PathPrefixStrip:/phpmyadmin/;AddPrefix:/"
次に、 docker-compose の設定で PMA_ABSOLUTE_URI
を指定してください。
version: '2'
services:
phpmyadmin:
restart: always
image: phpmyadmin:latest
container_name: phpmyadmin
hostname: phpmyadmin
domainname: example.com
ports:
- 8000:80
environment:
- PMA_HOSTS=172.26.36.7,172.26.36.8,172.26.36.9,172.26.36.10
- PMA_VERBOSES=production-db1,production-db2,dev-db1,dev-db2
- PMA_USER=root
- PMA_PASSWORD=
- PMA_ABSOLUTE_URI=http://example.com/phpmyadmin/
IBM クラウド¶
ユーザの1人が、 phpMyAdmin を IBM Cloud プラットフォーム にインストールするための役立つガイドを作成してくれました。
クイックインストール¶
- phpmyadmin.net のダウンロードページから、適切な配布キットを選択してください。キットによって英語のメッセージしか含まれていなかったり、すべての言語が含まれていたりします。以後、
phpMyAdmin-x.x.x -all-languages.tar.gz
のような名前のキットを選んだと仮定して説明します。 - 正しいアーカイブをダウンロードしたことを確認してください。 phpMyAdmin リリースの検証 を参照してください。
- tar または zip の配布ファイルを展開します (unzip の場合はサブディレクトリ付きで)。ウェブサーバのドキュメントルートで
tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz
を実行します。ドキュメントルートへの直接アクセス権がない場合は、ローカルマシンのディレクトリにファイルを解凍し、ステップ 4 まで済んだらそのディレクトリを FTP などでウェブサーバに転送してください。 - 必ずすべてのスクリプトの所有者を適切に設定してください (PHP がセーフモードで実行されている場合、スクリプトによって所有者が異なると問題が発生します)。解説については 4.2 phpMyAdmin を悪意のあるアクセスから守るようにするお勧めの方法はありますか? や 1.26 phpMyAdmin を IIS のドキュメントルートにインストールしたところなのですが、phpMyAdmin を実行しようとすると「No input file specified(入力ファイルが指定されていません)」というエラーが出ます。 を参照してください。
- まず最初に、インストールを設定する必要があります。やり方は 2 つあります。1 つは、ユーザが
config.inc.php
を手動で編集・コピーする伝統的な方法ですが、グラフィカルなインストールを好む人向けにウィザード形式のセットアップスクリプトも提供するようになりました。現在でもconfig.inc.php
を作成する方がすばやく始められる方法であり、一部の高度な機能にはこちらが必要です。
手作業でのファイルの作成¶
手作業でファイルを作成するには、テキストエディタを使用して config.inc.php
ファイルを phpMyAdmin のメイン (トップレベル) ディレクトリ (index.php
があるところ) に作成するだけです (その際、 config.sample.inc.php
をコピーすることで最小限の設定ファイルを作成することもできます)。最初に phpMyAdmin はデフォルトの設定値をを読み込み、それから config.inc.php
内で見つかった値でデフォルト値を上書きします。設定に問題がなければ、デフォルト値は config.inc.php
に含める必要はありません。稼動させるにはいくつかの設定項目が必要ですが、単純な設定では以下にようになります。
<?php
// The string is a hexadecimal representation of a 32-bytes long string of random bytes.
$cfg['blowfish_secret'] = sodium_hex2bin('f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851');
$i=0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
// if you insist on "root" having no password:
// $cfg['Servers'][$i]['AllowNoPassword'] = true;
あるいは、ログインするたびにプロンプトを表示させたくないのであれば以下のようにします。
<?php
$i=0;
$i++;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'changeme'; // use here your password
$cfg['Servers'][$i]['auth_type'] = 'config';
警告
設定にパスワードを保存すると、誰でもデータベースを操作できるようになるため安全ではありません。
使用可能な設定値の詳細な解説については、このドキュメントの 設定 を参照してください。
セットアップスクリプトの使用¶
config.inc.php
を手動で編集する代わりに、 phpMyAdmin のセットアップ機能を使用することができます。セットアップを使用してファイルを生成し、サーバにアップロードするためにダウンロードすることができます。
次にブラウザを開き、 phpMyAdmin をインストールした場所の最後に /setup
を付けてアクセスします。変更はサーバに保存されません。 ダウンロード ボタンを使用して変更をコンピュータに保存してから、サーバにアップロードする必要があります。
これで、ファイルを使用する準備ができました。セットアップスクリプトが提供していない一部の高度なオプションを設定したい場合は、好きなエディタでファイルを確認したり編集したりすることを選択できます。
auth_type
に ”config" を使用した場合は、phpMyAdmin をインストールしたディレクトリを保護することをお勧めします。なぜなら、config 認証を使用した場合、インストールされた phpMyAdmin にアクセスするのに、ユーザがパスワードの入力を必要としないからです。 .htaccess ファイルで HTTP 認証を設定したり、auth_type
を cookie または http で使用するなど、その他の認証方法の使うことをお勧めします。詳細については ISP やマルチユーザのインストール 、特に 4.4 HTTP 認証を使用すると必ず「Access denied (アクセスは拒否されました)」になります。 を参照してください。- ブラウザで phpMyAdmin のメインディレクトリを開きます。 HTTP 認証やクッキー認証モードを使用している場合、 phpMyAdmin はようこそ画面とデータベース、またはログインダイアログが表示されるようになりました。
Debian、Ubuntu とその派生製品のセットアップスクリプト¶
Debian と Ubuntu では、セットアップスクリプトを有効にしたり無効にしたりする方法が変更されました。これにより、それぞれのために単一のコマンドを実行する必要があります。
設定を編集できるようにするには、次のように呼び出してください。
/usr/sbin/pma-configure
設定の編集を防止するには、次のように呼び出してください。
/usr/sbin/pma-secure
openSUSE のセットアップスクリプト¶
openSUSE の一部のリリースでは、パッケージにセットアップスクリプトが含まれていません。そのような環境の場合は、 <https://www.phpmyadmin.net/> から元のパッケージをダウンロードしたり、デモサーバ <https://demo.phpmyadmin.net/master/setup/> のセットアップスクリプトを使用したりすることで、設定を作成することができます。
phpMyAdmin リリースの検証¶
2015年7月以降、すべての phpMyAdmin のリリースはリリース開発者によって暗号で署名されており、2016年1月までは Marc Delisle でした。彼のキーIDは 0xFEFC65D181AF644A であり、彼の PGP フィンガープリントは次のとおりです。
436F F188 4B1A 0C3F DCBF 0D79 FEFC 65D1 81AF 644A
また、他の識別情報は <https://keybase.io/lem9> から入手できます。
2016年1月から、リリース管理者は Isaac Bennetch です。彼のキー ID は 0xCE752F178259BD92 であり、 PGP フィンガープリントは次の通りです。
3D06 A59E CE73 0EB7 1B51 1C17 CE75 2F17 8259 BD92
また、他の識別情報は <https://keybase.io/ibennetch> から入手できます。
その他のいくつかのダウンロード (例えばテーマ) は、 Michal Čihař が署名していることがあります。彼のキー ID は 0x9C27B31342B7511D で、 PGP フィンガープリントは次の通りです。
63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D
また、他の識別情報は <https://keybase.io/nijel> から入手できます。
署名がダウンロードしたアーカイブと一致することを確認してください。この方法で、リリースされたものと同じコードを使用していることを確認できます。また、署名の日付を確認して、最新バージョンをダウンロードしたことを確認してください。
各アーカイブには、その PGP 署名を含む .asc
ファイルが付属しています。両方を同じフォルダに入れれば、署名を検証することができます。
$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Can't check signature: public key not found
ご覧のとおり、 gpg は公開鍵を知らないと報告します。この時点で、次のいずれかの手順を実行する必要があります。
- ダウンロードサーバ からキーリングをダウンロードし、次のようにしてインポートしてください。
$ gpg --import phpmyadmin.keyring
- 鍵サーバのうちの 1 つから鍵をダウンロードしてインポートしてください。
$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 3D06A59ECE730EB71B511C17CE752F178259BD92
gpg: requesting key 8259BD92 from hkp server pgp.mit.edu
gpg: key 8259BD92: public key "Isaac Bennetch <bennetch@gmail.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
これにより、状況が少し改善されます。この時点で、指定された鍵の署名が正しいことを確認できますが、鍵で使用されている名前を信頼することはできません。
$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Good signature from "Isaac Bennetch <bennetch@gmail.com>"
gpg: aka "Isaac Bennetch <isaac@bennetch.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3D06 A59E CE73 0EB7 1B51 1C17 CE75 2F17 8259 BD92
ここでの問題は、誰でもこの名前の鍵を発行できることです。実際に言及された人が鍵を所有していることを確認する必要があります。 GNU プライバシーハンドブックは、 Validating other keys on your public keyring の章でこのトピックを扱っています。最も信頼できる方法は、開発者に直接会ってキーフィンガープリントを交換することですが、信頼できるウェブに頼ることもできます。このようにして、開発者に直接会った他の人の署名を介して、キーを推移的に信頼することができます。
キーが信頼されると、警告は発生しません。
$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Good signature from "Isaac Bennetch <bennetch@gmail.com>" [full]
署名が無効な場合 (アーカイブが変更されている場合)、鍵が信頼されているかどうかに関係なく、明確なエラーが発生します。
$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: BAD signature from "Isaac Bennetch <bennetch@gmail.com>" [unknown]
phpMyAdmin 環境保管領域¶
バージョン 3.4.0 で変更: phpMyAdmin 3.4.0 より前は、これはリンクテーブル基盤と呼ばれていましたが、ストレージの用途が拡大されたため、名前が変更されました。
一連の追加機能 (ブックマーク、コメント、 SQL の履歴、コマンド追跡機能、 PDF 生成、 変換機能、 リレーション など) を使うには専用のテーブル群を作成する必要があります。これらのテーブル群は自分のデータベースに格納することもできますし、マルチユーザのインストールの場合はセントラルデータベースに格納することもできます (このセントラルデータベースは制御ユーザがアクセスするものです。ほかのユーザに権限を持たせないでください)。
ゼロ設定¶
In many cases, this database structure can be automatically created and
configured. This is called “Zero Configuration” mode and can be particularly
useful in shared hosting situations. “ZeroConf” mode is on by default, to
disable set $cfg['ZeroConf']
to false.
ゼロ設定モードは、以下の3種類のシナリオに対応しています。
- 環境保管領域のテーブルが存在しないデータベースに入ると、 phpMyAdmin は [操作] タブから作成することを提案します。
- テーブルがすでに存在するデータベースに入ると、ソフトウェアはこれを自動的に検出して使用し始めます。これは最も一般的な状況です。テーブルが最初に自動的に作成された後、ユーザを邪魔することなく継続的に使用されます。これは、共有ホスティングでユーザが
config.inc.php
を編集できず、通常、ユーザが1つのデータベースにしかアクセスしない場面で最も有用です。 - 複数のデータベースにアクセスする場合、ユーザが先に環境保管領域のテーブルを含むデータベースに入ってから、別のデータベースに切り替えた場合、 phpMyAdmin は最初のデータベースのテーブルを使用し続けます。ユーザに対して、新しいデータベースにさらにテーブルを作成するよう求めることはありません。
手作業での設定¶
./sql/
ディレクトリを確認してください。 create_tables.sql というファイルがあるはずです (Windows サーバを使用している場合は、 1.23 MySQL を Win32 マシンで稼動させているのですが、新規テーブルを作成するたびにテーブル名とカラム名が小文字に変わってしまいます! を注意深く読んでください)。
すでにこの仕組みを使用している場合は、次のことを実行してください。
- MySQL 4.1.2 以降にアップグレードする場合は、
sql/upgrade_tables_mysql_4_1_2+.sql
を使用してください。 - phpMyAdmin 2.5.0 以降 (4.2.x 以前) から 4.3.0 以降にアップグレードした場合は、
sql/upgrade_column_info_4_3_0+.sql
を使用してください。 - phpMyAdmin 4.3.0 以降から 4.7.0 以降にアップグレードした場合は、
sql/upgrade_tables_4_7_0+.sql
を使用してください。
それから sql/create_tables.sql
をインポートして新しいテーブルを作成してください。
phpMyAdmin を使ってテーブル群を作成することもできますが、いくつか注意することがあります。データベースやテーブルを作成する際には特別な (管理者の) 権限が必要になるかもしれません。また、データベース名によってはスクリプトに多少の修正を加える必要があるかもしれません。
sql/create_tables.sql
ファイルをインポートしたら、 config.inc.php
ファイルでテーブル名を指定してください。このとき使う設定項目の説明は 設定 にあります。
これらのテーブルに対して正しい権限を持った制御ユーザ ($cfg['Servers'][$i]['controluser']
および $cfg['Servers'][$i]['controlpass']
設定) が必要です。例えば、以下の文を使用して作成することができます。
MariaDB の任意のバージョンの場合:
CREATE USER 'pma'@'localhost' IDENTIFIED VIA mysql_native_password USING 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON `<pma_db>`.* TO 'pma'@'localhost';
MySQL 8.0 以降の場合:
CREATE USER 'pma'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
MySQL 8.0 以前の場合:
CREATE USER 'pma'@'localhost' IDENTIFIED WITH mysql_native_password AS 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
なお、 PHP 7.4 より前と MySQL 8.0 より後の MySQL インストールでは、応急措置として mysql_native_password 認証を使用する必要があるかもしれません。詳しくは 1.45 ログインしようとすると、 caching_sha2_password が不明な認証方法であることに関するエラーメッセージが表示されます を参照してください。
旧版からのアップグレード¶
警告
絶対に インストール済みの phpMyAdmin の上に新しいバージョンを展開しないでください。必ず先に古いファイルを削除し、設定のみを保持するようにしてください。
このようにして、セキュリティに深刻な影響を及ぼしたり、さまざまな破損を引き起こしたりする可能性がある古いファイルをディレクトリに残さないようにします。
以前インストールされたものから config.inc.php
を新しく展開した先にコピーするだけです。古いバージョンにあった設定ファイルは、一部のオプションを変更したり削除したりする若干の調整が必要な場合があります。設定ファイルの末尾付近に set_magic_quotes_runtime(0);
文が見つかった場合は、 PHP 5.3 以降との互換性のために削除してください。
いくつかの単純な手順で完全なアップグレードを行うことができます。
- 最新版の phpMyAdmin を <https://www.phpmyadmin.net/downloads/> からダウンロードしてください。
- 既存の phpMyAdmin のフォルダの名前を変更します (例えば
phpmyadmin-old
などへ)。 - 新しくダウンロードした phpMyAdmin を必要な場所 (例えば
phpmyadmin
) に展開してください。 config.inc.php
を古い場所 (phpmyadmin-old
) から新しい場所 (phpmyadmin
) へコピーします。- すべてが正しく動作することをテストします。
- 以前のバージョンのバックアップ (
phpmyadmin-old
) を削除します。
MySQL サーバをバージョン 4.1.2 以前から 5.x 以降へアップグレードして、かつ、 phpMyAdmin 環境保管領域を使用している場合、 sql/upgrade_tables_mysql_4_1_2+.sql
にある SQL スクリプトを実行する必要があります。
phpMyAdmin 2.5.0 以降 (4.2.x 以前) を 4.3.0 以降にアップグレードした場合で、 phpMyAdmin 環境保管領域を使用している場合は、 sql/upgrade_column_info_4_3_0+.sql
にある SQL スクリプトを実行してください。
ブラウザのキャッシュをクリアすることと、ログアウトして古いセッションを空にし、ログインし直すことを忘れないでください。
認証モードの使い方¶
HTTP 認証モードとクッキー認証モードは、ユーザに自分のデータベースへのアクセスを許可し、他のデータベースにアクセスしてほしくない マルチユーザ環境 にお勧めです。それでも、 MS Internet Explorer の少なくともバージョン 6 までは、クッキーについて実にバグが多いことに注意してください。 シングルユーザ環境 でも、ユーザ名とパスワードのが設定ファイルで明らかにならないので、 HTTP 認証モードやクッキー認証モードを使用することをお勧めします。
HTTP 認証モードやクッキー認証モードの方がより安全です。 MySQL のログイン情報を phpMyAdmin の設定ファイルに書く必要がないからです ($cfg['Servers'][$i]['controluser']
)。しかし、 HTTPS プロトコルを使用しない限り、パスワードはプレーンテキストで送信されることに気を付けてください。クッキーモードでは、パスワードは一時的なクッキーに AES アルゴリズムで暗号化した上で保存されます。
それから、それぞれの 本当の ユーザには、特定のデータベースのセットに対する一連の権限を与えなければなりません。通常、権限の影響を理解しているユーザでない限り(例えばスーパーユーザを作成している場合など)、通常のユーザにグローバル権限を与えるべきではありません。例えば、 real_user にデータベース user_base 上のすべての権限を付与するには、以下のようにしてください。
GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';
ユーザが実行できることは、完全に MySQL のユーザ管理システムによって制御されます。 HTTP またはクッキー認証モードでは、 $cfg['Servers']
のユーザ/パスワードフィールドに記入する必要はありません。
参考
1.32 IIS で HTTP 認証を利用できますか?、 1.35 Apache の CGI で HTTP 認証が使用できますか?、 4.1 当方は ISP です。 phpMyAdmin のセントラルコピーを一つだけセットアップするようにできますか?それとも顧客ごとにインストールする必要がありますか?、 4.2 phpMyAdmin を悪意のあるアクセスから守るようにするお勧めの方法はありますか?、 4.3 /lang や /libraries の中のファイルをインクルードできないというエラーが出ます。
HTTP 認証モード¶
HTTP の Basic 認証を使用して、有効な MySQL ユーザとしてログインできるようになります。
ほとんどの PHP 構成が対応しています。 CGI PHP を使用した IIS (ISAPI) の対応については、 1.32 IIS で HTTP 認証を利用できますか? を参照し、 Apache CGI の場合は 1.35 Apache の CGI で HTTP 認証が使用できますか? を参照してください。
PHP が Apache の mod_proxy_fcgi の下で (例えば PHP-FPM で) 実行されている場合、
Authorization
ヘッダが配下の FCGI アプリケーションに渡されず、 FCGI アプリケーションに渡されないため、資格情報がアプリケーションに到達しません。この場合、次の設定項目を追加できます。SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
'HTTP' 認証モードで .htaccess メカニズムを使用しない方法については、 4.4 HTTP 認証を使用すると必ず「Access denied (アクセスは拒否されました)」になります。 も参照してください。
注釈
HTTP 認証で適切なログアウトを行う方法はありません。ほとんどのブラウザでは、他の認証が成功しない限り、資格情報を保持します。このため、この方法ではログアウト後に同じユーザでログインできないという制限があります。
クッキー認証モード¶
- ユーザ名とパスワードはセッション中はクッキーに保存され、パスワードは終了時に削除されます。
- このモードでは、ユーザは phpMyAdmin のログアウトが確実に行え、同じユーザ名でログインし直すことができます (これは HTTP 認証モード ではできません)。
- 接続先に (
config.inc.php
で設定したサーバのみでなく) ユーザが任意のホスト名を入力できるようにしたいのであれば、$cfg['AllowArbitraryServer']
の設定項目を参照してください。 - 要件 の章にある通り、
openssl
拡張機能を利用するとアクセスが顕著に高速化されますが、必須ではありません。
サインオン認証モード¶
- このモードは、別のアプリケーションからの資格情報を使用して phpMyAdmin に認証を行い、シングルサインオンのソリューションを実装するのに便利な方法です。
- 別なアプリケーションがセッションデータにログイン情報を格納するか (
$cfg['Servers'][$i]['SignonSession']
および$cfg['Servers'][$i]['SignonCookieParams']
を参照)、こちらで資格情報を返すスクリプトを実装する必要があります ($cfg['Servers'][$i]['SignonScript']
を参照)。 - 資格情報が利用できない場合は、ユーザがログインプロセスを行う
$cfg['Servers'][$i]['SignonURL']
にリダイレクトされます。
資格情報をセッションに保存するとても基本的な例が examples/signon.php
にあります。
<?php
/**
* Single signon for phpMyAdmin
*
* This is just example how to use session based single signon with
* phpMyAdmin, it is not intended to be perfect code and look, only
* shows how you can integrate this functionality in your application.
*/
declare(strict_types=1);
/* Use cookies for session */
ini_set('session.use_cookies', 'true');
/* Change this to true if using phpMyAdmin over https */
$secure_cookie = false;
/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secure_cookie, true);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
// Uncomment and change the following line to match your $cfg['SessionSavePath']
//session_save_path('/foobar');
@session_start();
/* Was data posted? */
if (isset($_POST['user'])) {
/* Store there credentials */
$_SESSION['PMA_single_signon_user'] = $_POST['user'];
$_SESSION['PMA_single_signon_password'] = $_POST['password'];
$_SESSION['PMA_single_signon_host'] = $_POST['host'];
$_SESSION['PMA_single_signon_port'] = $_POST['port'];
/* Update another field of server configuration */
$_SESSION['PMA_single_signon_cfgupdate'] = ['verbose' => 'Signon test'];
$_SESSION['PMA_single_signon_HMAC_secret'] = hash('sha1', uniqid(strval(random_int(0, mt_getrandmax())), true));
$id = session_id();
/* Close that session */
@session_write_close();
/* Redirect to phpMyAdmin (should use absolute URL here!) */
header('Location: ../index.php');
} else {
/* Show simple form */
header('Content-Type: text/html; charset=utf-8');
echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
echo '<!DOCTYPE HTML>
<html lang="en" dir="ltr">
<head>
<link rel="icon" href="../favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon">
<meta charset="utf-8">
<title>phpMyAdmin single signon example</title>
</head>
<body>';
if (isset($_SESSION['PMA_single_signon_error_message'])) {
echo '<p class="error">';
echo $_SESSION['PMA_single_signon_error_message'];
echo '</p>';
}
echo '<form action="signon.php" method="post">
Username: <input type="text" name="user" autocomplete="username" spellcheck="false"><br>
Password: <input type="password" name="password" autocomplete="current-password" spellcheck="false"><br>
Host: (will use the one from config.inc.php by default)
<input type="text" name="host"><br>
Port: (will use the one from config.inc.php by default)
<input type="text" name="port"><br>
<input type="submit">
</form>
</body>
</html>';
}
または、 examples/openid.php
にあるように、この方法を使用して OpenID と統合することもできます。
<?php
/**
* Single signon for phpMyAdmin using OpenID
*
* This is just example how to use single signon with phpMyAdmin, it is
* not intended to be perfect code and look, only shows how you can
* integrate this functionality in your application.
*
* It uses OpenID pear package, see https://pear.php.net/package/OpenID
*
* User first authenticates using OpenID and based on content of $AUTH_MAP
* the login information is passed to phpMyAdmin in session data.
*/
declare(strict_types=1);
if (false === @include_once 'OpenID/RelyingParty.php') {
exit;
}
/* Change this to true if using phpMyAdmin over https */
$secure_cookie = false;
/**
* Map of authenticated users to MySQL user/password pairs.
*/
$AUTH_MAP = [
'https://launchpad.net/~username' => [
'user' => 'root',
'password' => '',
],
];
// phpcs:disable PSR1.Files.SideEffects,Squiz.Functions.GlobalFunction
/**
* Simple function to show HTML page with given content.
*
* @param string $contents Content to include in page
*/
function Show_page($contents): void
{
header('Content-Type: text/html; charset=utf-8');
echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
echo '<!DOCTYPE HTML>
<html lang="en" dir="ltr">
<head>
<link rel="icon" href="../favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon">
<meta charset="utf-8">
<title>phpMyAdmin OpenID signon example</title>
</head>
<body>';
if (isset($_SESSION['PMA_single_signon_error_message'])) {
echo '<p class="error">' . $_SESSION['PMA_single_signon_message'] . '</p>';
unset($_SESSION['PMA_single_signon_message']);
}
echo $contents;
echo '</body></html>';
}
/**
* Display error and exit
*
* @param Exception $e Exception object
*/
function Die_error($e): void
{
$contents = "<div class='relyingparty_results'>\n";
$contents .= '<pre>' . htmlspecialchars($e->getMessage()) . "</pre>\n";
$contents .= "</div class='relyingparty_results'>";
Show_page($contents);
exit;
}
// phpcs:enable
/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secure_cookie, true);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
@session_start();
// Determine realm and return_to
$base = 'http';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
$base .= 's';
}
$base .= '://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];
$realm = $base . '/';
$returnTo = $base . dirname($_SERVER['PHP_SELF']);
if ($returnTo[strlen($returnTo) - 1] !== '/') {
$returnTo .= '/';
}
$returnTo .= 'openid.php';
/* Display form */
if ((! count($_GET) && ! count($_POST)) || isset($_GET['phpMyAdmin'])) {
/* Show simple form */
$content = '<form action="openid.php" method="post">
OpenID: <input type="text" name="identifier"><br>
<input type="submit" name="start">
</form>';
Show_page($content);
exit;
}
/* Grab identifier */
$identifier = null;
if (isset($_POST['identifier']) && is_string($_POST['identifier'])) {
$identifier = $_POST['identifier'];
} elseif (isset($_SESSION['identifier']) && is_string($_SESSION['identifier'])) {
$identifier = $_SESSION['identifier'];
}
/* Create OpenID object */
try {
$o = new OpenID_RelyingParty($returnTo, $realm, $identifier);
} catch (Throwable $e) {
Die_error($e);
}
/* Redirect to OpenID provider */
if (isset($_POST['start'])) {
try {
$authRequest = $o->prepare();
} catch (Throwable $e) {
Die_error($e);
}
$url = $authRequest->getAuthorizeURL();
header('Location: ' . $url);
exit;
}
/* Grab query string */
if (! count($_POST)) {
[, $queryString] = explode('?', $_SERVER['REQUEST_URI']);
} else {
// Fetch the raw query body
$queryString = file_get_contents('php://input');
}
/* Check reply */
try {
$message = new OpenID_Message($queryString, OpenID_Message::FORMAT_HTTP);
} catch (Throwable $e) {
Die_error($e);
}
$id = $message->get('openid.claimed_id');
if (empty($id) || ! isset($AUTH_MAP[$id])) {
Show_page('<p>User not allowed!</p>');
exit;
}
$_SESSION['PMA_single_signon_user'] = $AUTH_MAP[$id]['user'];
$_SESSION['PMA_single_signon_password'] = $AUTH_MAP[$id]['password'];
$_SESSION['PMA_single_signon_HMAC_secret'] = hash('sha1', uniqid(strval(random_int(0, mt_getrandmax())), true));
session_write_close();
/* Redirect to phpMyAdmin (should use absolute URL here!) */
header('Location: ../index.php');
他の方法で認証情報を渡す場合は、 PHP にラッパーを実装してデータを取得し、 $cfg['Servers'][$i]['SignonScript']
に設定しなければなりません。 examples/signon-script.php
に非常にシンプルな例があります。
<?php
/**
* Single signon for phpMyAdmin
*
* This is just example how to use script based single signon with
* phpMyAdmin, it is not intended to be perfect code and look, only
* shows how you can integrate this functionality in your application.
*/
declare(strict_types=1);
// phpcs:disable Squiz.Functions.GlobalFunction
/**
* This function returns username and password.
*
* It can optionally use configured username as parameter.
*
* @param string $user User name
*
* @return array<int,string>
*/
function get_login_credentials($user): array
{
/* Optionally we can use passed username */
if (! empty($user)) {
return [
$user,
'password',
];
}
/* Here we would retrieve the credentials */
return [
'root',
'',
];
}
config 認証モード¶
- このモードはあまり安全ではありません。設定項目の
$cfg['Servers'][$i]['user']
と$cfg['Servers'][$i]['password']
を記入する必要があるからです (そのため、config.inc.php
を読める人なら誰でもユーザ名とパスワードを見ることができてしまいます)。 - ISP やマルチユーザのインストール 節の中で、構成ファイルを保護する方法を説明している項目があります。
- このモードのセキュリティを向上させるには、
$cfg['Servers'][$i]['AllowDeny']['order']
と$cfg['Servers'][$i]['AllowDeny']['rules']
の設定項目でホスト認証することを検討してみてください。 - クッキー認証や HTTP 認証とは異なり、最初に phpMyAdmin サイトを読み込んだときに、ユーザがログインする必要がありません。これは仕様によるものですが、インストール先へのアクセスをどのユーザにも許可しているということです。いくつかの制約をかけることを推奨します。 .htaccess ファイルで HTTP 認証を設定したり、ルータやファイアウォールで入ってくる HTTP リクエストを拒否したりすればおそらく十分でしょう (どちらもこのマニュアルの範疇を超えていますが、Google で容易に検索できます)。
phpMyAdmin のインストールを安全にする¶
phpMyAdmin チームは、アプリケーションを安全にするために一生懸命努力していますが、インストールをより安全にする方法は常にあります。
私たちの セキュリティアナウンス をフォローし、新しい脆弱性が公開されるたびに phpMyAdmin をアップグレードしてください。
phpMyAdmin を HTTPS のみで提供してください。できれば、プロトコルのダウングレード攻撃から保護するために、 HSTS も使用してください。
PHP の設定が本番サイトの推奨事項に従っていることを確認してください。たとえば、 display_errors を無効にしてください。
開発中でテストスイートが必要な場合を除いて、 phpMyAdmin から
test
ディレクトリを削除してください。phpMyAdmin から
setup
ディレクトリを削除してください。おそらく初期セットアップの後は使用しないでしょう。認証方法を適切に選択してください。 - 共有ホスティングにはおそらく クッキー認証モード が最良の選択でしょう。
ウェブサーバの設定で、サブフォルダ
./libraries/
または./templates/
にある外部ファイルへのアクセスを拒否してください。このような設定により、そのコードで発生する可能性のあるパスの公開やクロスサイトスクリプティングの脆弱性を防ぐことができます。 Apache ウェブサーバでは、多くの場合、これらのディレクトリにある .htaccess ファイルで設定します。一時ファイルへのアクセスを拒否するようにしてください。
$cfg['TempDir']
を参照してください (ウェブルート内に配置されている場合は、「ウェブサーバのアップロード/保存/インポートディレクトリ」も参照してください)。一般的に、公開している phpMyAdmin のインストールをロボットからのアクセスから保護することは良い考えです。ウェブサーバのルートにある
robots.txt
ファイルを使用して行ったり、ウェブサーバの構成でアクセスを制限したりすることで実現できます。 1.42 ロボットから phpMyAdmin へのアクセスを防ぐにはどうすればいいのでしょうか? を参照してください。すべての MySQL ユーザが phpMyAdmin にアクセスできるようにしたくない場合は、
$cfg['Servers'][$i]['AllowDeny']['rules']
を使用して制限したり、$cfg['Servers'][$i]['AllowRoot']
を使用して root ユーザのアクセスを拒否したりすることができます。アカウントで 二要素認証 を有効にしてください。
phpMyAdmin を認証プロキシの背後に隠すことを検討してください。そうすればユーザが phpMyAdmin に MySQL の資格情報を入力する前に認証を受けるようになります。これは、ウェブサーバに HTTP 認証を要求するように構成することで実現できます。例えば Apache では、次のようにして実現できます。
AuthType Basic AuthName "Restricted Access" AuthUserFile /usr/share/phpmyadmin/passwd Require valid-user
構成を変更したら、認証するユーザの一覧を作成する必要があります。これは htpasswd ユーティリティを使用して行うことができます。
htpasswd -c /usr/share/phpmyadmin/passwd username
自動攻撃を恐れているのであれば、
$cfg['CaptchaLoginPublicKey']
と$cfg['CaptchaLoginPrivateKey']
で Captcha を有効にするのも選択肢の一つです。失敗したログインの試みは syslog に記録されます (利用可能な場合は、
$cfg['AuthLog']
を参照してください)。これにより、 fail2ban などのツールを使用して総当たり攻撃をブロックできます。 syslog が使用するログファイルは、 Apache のエラーログやアクセスログファイルと同じではないことに注意してください。phpMyAdmin を他の PHP アプリケーションと一緒に実行している場合は、 phpMyAdmin に対して個別のセッションストレージを使用して、セッションベースの攻撃を回避することをお勧めします。これを実現するには、
$cfg['SessionSavePath']
が使用できます。
データベースサーバへの接続で SSL を使用する¶
リモートデータベースサーバに接続するときは SSL を使用することをお勧めします。 SSL のセットアップに関連するいくつかの設定オプションがあります。
$cfg['Servers'][$i]['ssl']
- SSLを使用するかどうかを定義します。これのみを有効にすると、接続は暗号化されますが、接続の認証は行われません。適切なサーバと通信していることを確認することはできません。
$cfg['Servers'][$i]['ssl_key']
と$cfg['Servers'][$i]['ssl_cert']
- これはクライアントからサーバの認証に使用されます。
$cfg['Servers'][$i]['ssl_ca']
と$cfg['Servers'][$i]['ssl_ca_path']
- サーバ証明書で信頼する認証局です。これは、信頼できるサーバと通信していることを確認するために使用されます。
$cfg['Servers'][$i]['ssl_verify']
- この構成はサーバ証明書の検証を無効にします。注意して使用してください。
データベースサーバがローカル接続やプライベートネットワークを使用していて SSL が構成できない場合は、 $cfg['MysqlSslWarningSafeHosts']
に安全と見なすホスト名を明示的に並べることができます。