phpMyAdmin 日本語ドキュメント

目次:

はじめに

phpMyAdmin は、 MySQL または MariaDB データベースサーバの管理を扱うことを目的とした、 PHP で記述されたフリーソフトウェアのツールです。 phpMyAdmin を使用して、データベースの作成、クエリの実行、ユーザアカウントの追加など、ほとんどの管理タスクを実行できます。

対応している機能

phpMyAdmin は現在次のことができます。

  • データベース、テーブル、ビュー、カラム、インデックスの作成、表示、削除
  • ストアドプロシージャやクエリを通しての複数の結果セットの表示
  • データベース、テーブル、カラム、インデックスの作成、複製、削除、名前や定義の変更
  • サーバ、データベース、テーブルの保守、そのためのサーバの設定を提案
  • あらゆる SQL 文の実行、編集、ブックマークができ、バッチクエリも可
  • テキストファイルをテーブルに読み込み
  • テーブルダンプの作成 [1] と読み込み
  • 様々な形式のデータのエクスポート [1]CSV, XML, PDF, ISO/IEC 26300 - OpenDocument テキストおよびスプレッドシート, Microsoft Word 2000, LATEX 形式
  • データと MySQL 構造のインポート。 OpenDocument スプレッドシート、 XMLCSVSQL の各ファイルより
  • 複数のサーバの管理
  • MySQL ユーザアカウントと権限の追加、編集、削除
  • MyISAM テーブルにおける参照完全性のチェック
  • データベースレイアウトの PDF 画像の作成
  • データベースないしそのサブセットのグローバル検索
  • 事前に定義された一連の関数を使用した、格納されたデータの任意の形式への変換。 BLOB データを画像やダウンロードリンクとして表示するなど
  • データベース、テーブル、ビューの変更の追跡
  • InnoDB テーブルと外部キーの対応
  • 改良版の MySQL 拡張モジュールである mysqli の対応、1.17 phpMyAdmin が対応しているデータベースのバージョンは? を参照
  • ストアドプロシージャや関数の作成、編集、呼び出し、エクスポート、削除
  • イベントやトリガの作成、編集、エクスポート、削除
  • 80 の異なる言語 に対応

ショートカットキー

現在、phpMyAdmin は以下のショートカットに対応しています。

  • k - コンソールの表示/非表示
  • h - ホームページへ移動
  • s - 設定を開く
  • d + s - データベースの構造へ移動 (データベース関連のページにいる場合)
  • d + f - データベースを検索 (データベース関連のページにいる場合)
  • t + s - テーブルの構造へ移動 (テーブル関連のページにいる場合)
  • t + f - テーブルを検索 (テーブル関連のページにいる場合)
  • backspace - ひとつ前のページへ移動。

ユーザについて一言

多くの人々が phpMyAdmin におけるユーザ管理の概念を理解するのが難しいと感じています。ユーザが phpMyAdmin にログインすると、その時のユーザ名とパスワードは MySQL に直接渡されます。phpMyAdmin は、独自にアカウント管理を (MySQL のユーザアカウント情報を操作するために1つ許可している以外は) 行っていません。すべてのユーザは、有効な MySQL ユーザである必要があります。

脚注

[1](1, 2) Zlib に対応 (--with-zlib) した PHP を使用すると、 phpMyAdmin は圧縮ダンプ (ZIPGZipRFC 1952 形式) や CSV エクスポートが利用できるようになります。適切な対応には php.ini の変更が必要になる場合があります。

要件

ウェブサーバ

phpMyAdmin のインタフェースは完全にブラウザに基づいているため、 phpMyAdmin のファイルをインストールするにはウェブサーバ (Apache、 nginx、 IIS など) が必要です。

PHP

  • You need PHP 8.1.2 or newer, with session support, the Standard PHP Library (SPL) extension, hash, ctype, and JSON support.
  • mbstring 拡張機能 (mbstring を参照) を性能上の理由から強く推奨します。
  • ZIP ファイルのアップロードに対応するには、PHP の zip 拡張モジュールが必要です。
  • JPEG 画像のインラインサムネイル ("image/jpeg: inline") を正しい縦横比で表示する場合は、 PHP が GD2 に対応している必要があります。
  • クッキー認証を使用する場合は (既定)、 openssl 拡張モジュールを強く推奨します。
  • アップロードの進捗バーに対応するには、 2.9 アップロード進行状況バーが見えるようにする を参照してください。
  • XML と Open Document スプレッドシートのインポートに対応するには、 libxml 拡張モジュールが必要です。
  • ログインページで reCAPTCHA に対応するには、 openssl 拡張モジュールが必要です。
  • phpMyAdmin の最新のバージョンの表示に対応するには、 php.ini の中の allow_url_open を有効にするか、 curl 拡張モジュールを使用する必要があります。

データベース

phpMyAdmin は MySQL と互換性のあるデータベースに対応しています。

  • MySQL 5.5 以降
  • MariaDB 5.0 以降

ウェブブラウザ

phpMyAdmin にアクセスするには、クッキーと JavaScript を有効にしたウェブブラウザが必要です。

Bootstrap 4.5 が対応しているブラウザが必要です。 <https://getbootstrap.com/docs/4.5/getting-started/browsers-devices/> を参照してください。

バージョン 5.2.0 で変更: Bootstrap 5.0 に対応したブラウザが必要です。 <https://getbootstrap.com/docs/5.0/getting-started/browsers-devices/> を参照してください。

インストール

phpMyAdmin は MySQL データベースサーバに特別なセキュリティをほどこすものではありません。phpMyAdmin を使ったとしても、MySQL データベースに適切なパーミッションを付与するのは、やはりシステム管理者の仕事です。ただし、その目的で phpMyAdmin の ユーザアカウント ページを使うことはできます。

Linux ディストリビューション

phpMyAdmin は多くの Linux ディストリビューションに含まれています。できればディストリビューションのパッケージを使用することをお勧めします。そちらはふつう、ディストリビューションとの統合が提供され、ディストリビューションからのセキュリティ更新を自動的に受けることができるからです。

Debian と Ubuntu

Debian と Ubuntu のほとんどのバージョンは phpMyAdmin パッケージを含んでいますが、設定ファイルは /etc/phpmyadmin の中で管理されており、公式の phpMyAdmin のドキュメントといくつかの点で異なることがあります。特に、以下のような点です。

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 (version 14 or higher)
  • 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_HOSTS

カンマ区切りの使用するデータベースサーバのホスト名と IP アドレスです。

注釈

PMA_HOST が空の場合のみ使用されます。

PMA_VERBOSE

このデータベースサーバの詳細な名前です。

PMA_VERBOSES

カンマ区切りのデータベースサーバの詳細な名前です。

注釈

PMA_VERBOSE が空の場合のみ使用されます。

PMA_USER

config 認証モード で使用するユーザ名です。

PMA_PASSWORD

config 認証モード で使用するパスワードです。

PMA_PORT

使用するデータベースサーバのポート番号です。

PMA_PORTS

カンマ区切りで使用するデータベースサーバのポート番号です。

注釈

PMA_PORT が空の場合のみ使用されます。

PMA_SOCKET

Socket file for the database connection.

PMA_SOCKETS

Comma-separated list of socket files for the database connections.

注釈

Used only if PMA_SOCKET is empty.

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_USERPMA_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 プラットフォーム にインストールするための役立つガイドを作成してくれました。

クイックインストール

  1. Choose an appropriate distribution kit from the phpmyadmin.net Downloads page. Some kits contain only the English messages, others contain all languages. We'll assume you chose a kit whose name looks like phpMyAdmin-x.x.x-all-languages.tar.gz.
  2. 正しいアーカイブをダウンロードしたことを確認してください。 phpMyAdmin リリースの検証 を参照してください。
  3. tar または zip の配布ファイルを展開します (unzip の場合はサブディレクトリ付きで)。ウェブサーバのドキュメントルートで tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz を実行します。ドキュメントルートへの直接アクセス権がない場合は、ローカルマシンのディレクトリにファイルを解凍し、ステップ 4 まで済んだらそのディレクトリを FTP などでウェブサーバに転送してください。
  4. 必ずすべてのスクリプトの所有者を適切に設定してください (PHP がセーフモードで実行されている場合、スクリプトによって所有者が異なると問題が発生します)。解説については 4.2 phpMyAdmin を悪意のあるアクセスから守るようにするお勧めの方法はありますか?1.26 phpMyAdmin を IIS のドキュメントルートにインストールしたところなのですが、phpMyAdmin を実行しようとすると「No input file specified(入力ファイルが指定されていません)」というエラーが出ます。 を参照してください。
  5. まず最初に、インストールを設定する必要があります。やり方は 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 を付けてアクセスします。変更はサーバに保存されません。 ダウンロード ボタンを使用して変更をコンピュータに保存してから、サーバにアップロードする必要があります。

これで、ファイルを使用する準備ができました。セットアップスクリプトが提供していない一部の高度なオプションを設定したい場合は、好きなエディタでファイルを確認したり編集したりすることを選択できます。

  1. auth_type に ”config" を使用した場合は、phpMyAdmin をインストールしたディレクトリを保護することをお勧めします。なぜなら、config 認証を使用した場合、インストールされた phpMyAdmin にアクセスするのに、ユーザがパスワードの入力を必要としないからです。 .htaccess ファイルで HTTP 認証を設定したり、 auth_type を cookie または http で使用するなど、その他の認証方法の使うことをお勧めします。詳細については ISP やマルチユーザのインストール 、特に 4.4 HTTP 認証を使用すると必ず「Access denied (アクセスは拒否されました)」になります。 を参照してください。
  2. ブラウザで 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 以降との互換性のために削除してください。

いくつかの単純な手順で完全なアップグレードを行うことができます。

  1. 最新版の phpMyAdmin を <https://www.phpmyadmin.net/downloads/> からダウンロードしてください。
  2. 既存の phpMyAdmin のフォルダの名前を変更します (例えば phpmyadmin-old などへ)。
  3. 新しくダウンロードした phpMyAdmin を必要な場所 (例えば phpmyadmin) に展開してください。
  4. config.inc.php を古い場所 (phpmyadmin-old) から新しい場所 (phpmyadmin) へコピーします。
  5. すべてが正しく動作することをテストします。
  6. 以前のバージョンのバックアップ (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'] のユーザ/パスワードフィールドに記入する必要はありません。

HTTP 認証モード

注釈

HTTP 認証で適切なログアウトを行う方法はありません。ほとんどのブラウザでは、他の認証が成功しない限り、資格情報を保持します。このため、この方法ではログアウト後に同じユーザでログインできないという制限があります。

サインオン認証モード

資格情報をセッションに保存するとても基本的な例が 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 */
$secureCookie = false;
/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secureCookie, true);
/* Create signon session */
$sessionName = 'SignonSession';
session_name($sessionName);
// 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 */
$secureCookie = false;

/**
 * Map of authenticated users to MySQL user/password pairs.
 */
$authMap = ['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(string $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(Throwable $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, '/', '', $secureCookie, true);
/* Create signon session */
$sessionName = 'SignonSession';
session_name($sessionName);
@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($authMap[$id])) {
    Show_page('<p>User not allowed!</p>');
    exit;
}

$_SESSION['PMA_single_signon_user'] = $authMap[$id]['user'];
$_SESSION['PMA_single_signon_password'] = $authMap[$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(string $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'] に安全と見なすホスト名を明示的に並べることができます。

既知の問題

カラム固有の権限を持ったユーザが [表示] を利用できない

ユーザがテーブルの一部の (すべてではない) カラムに特有の権限しか持っていない場合、 [表示] は失敗してエラーメッセージを表示します。

回避策として、テーブルと同じ名前のブックマーククエリを作成することができ、そうすれば [表示] リンクを使用したときに代わりに実行されます。 課題 11922

'http' 認証を使用してログアウトした後、再度ログインする際の問題

'http' auth_type を使用している場合、(ログアウトが手動で行われたとき、または一定時間非アクティブになった後で) 再度のログインができない場合があります。 課題 11898

設定

設定可能なデータは、ほとんどが phpMyAdmin の最上位ディレクトリの config.inc.php にあります。このファイルが存在しない場合は、 インストール の節を参照して作成してください。このファイルには、既定値から変更したい引数のみ入れておく必要があります。

参考

設定例 に設定の例があります

ある設定項目がファイルにない場合は、そのファイルにもう一行追加してください。このファイルは既定値を上書きするためのものです。デフォルト値を使いたい場合は、ここに行を追加する必要はありません。

デザイン関係の引数 (色など) は themes/themename/scss/_variables.scss にあります。また、 config.footer.inc.phpconfig.header.inc.php ファイルを修正すれば各ページの先頭と末尾にページ固有のコードを追加できます。

注釈

一部のディストリビューション (例えば Debian や Ubuntu) では、 config.inc.php が phpMyAdmin のソース内ではなく /etc/phpmyadmin にあります。

基本設定

$cfg['PmaAbsoluteUri']
データ型:文字列型
デフォルト値:''

バージョン 4.6.5 で変更: この設定は phpMyAdmin 4.6.0 - 4.6.4 では利用できません。

ここには、phpMyAdmin がインストールされているディレクトリの完全な URL を (フルパスで) 設定します。例えば https://www.example.net/path_to_your_phpMyAdmin_directory/ などです。なお、多くのウェブサーバでは (Windows であっても) この URL の大文字小文字を区別します。末尾のスラッシュを忘れないようにしてください。

バージョン 2.3.0 からはここを空欄にすることが推奨されています。たいていの場合、phpMyAdmin は自動的に適切な設定を検出します。ポート転送をしているユーザはこれをを設定する必要があるでしょう。

試しに、テーブルを表示して、行を編集して保存してみてください。 phpMyAdmin が正しい値を自動検出できていない場合はエラーメッセージが表示されるはずです。この値を設定してくださいというエラーが出る、あるいは自動検出コードがパスの検出に失敗する場合は、開発陣がコードを改善できるよう、バグレポートをバグトラッカーにお送りください。

$cfg['PmaNoRelation_DisableWarning']
データ型:論理型
デフォルト値:false

バージョン 2.3.0 以降、マスタ/外部テーブルを操作する機能が多数提供されています ($cfg['Servers'][$i]['pmadb'] 参照)。

そのマスタ/外部データベースをセットアップしてみてもうまくいかない場合、その機能を利用したいデータベースの 構造 ページを見れば、無効になっている理由を分析するリンクが見つかるはずです。

そういった機能を使いたくない場合は、この変数を true に設定しておけばメッセージが表示されなくなります。

$cfg['AuthLog']
データ型:文字列型
デフォルト値:'auto'

バージョン 4.8.0 で追加: phpMyAdmin 4.8.0 以降で対応しています。

認証ログの記録先を設定します。認証に失敗した (あるいはすべて、 $cfg['AuthLogSuccess'] に依存する) 認証の試みは、この設定項目に従ってログに記録されます。

auto
phpMyAdmin に自動的に syslogphp を選択させます。
syslog
syslog を使用してログを記録し、 AUTH 機能を使用すると、ほとんどのシステムで /var/log/auth.log になります。
php
PHP エラーログにログ出力します。
sapi
PHP の SAPI ログにログ出力します。
/path/to/file
それ以外の値はファイル名として扱われ、ログ項目はそこに書き込まれます。

注釈

ファイルにログを記録する際には、ウェブサーバのユーザ向けにパーミッションを正しく設定していることを確認し、設定が $cfg['TempDir'] に記述されている指示と合っている必要があります。

$cfg['AuthLogSuccess']
データ型:論理型
デフォルト値:false

バージョン 4.8.0 で追加: phpMyAdmin 4.8.0 以降で対応しています。

認証の成功を $cfg['AuthLog'] に記録するかどうか。

$cfg['SuhosinDisableWarning']
データ型:論理型
デフォルト値:false

Suhosin が検出された場合、警告をメインページに表示します。

この引数を true に設定することで、メッセージの表示を止めることができます。

$cfg['LoginCookieValidityDisableWarning']
データ型:論理型
デフォルト値:false

PHP のパラメータ session.gc_maxlifetime が phpMyAdmin で設定したクッキーの有効期限よりも短い場合、メインページに警告が表示されます。

この引数を true に設定することで、メッセージの表示を止めることができます。

$cfg['ServerLibraryDifference_DisableWarning']
データ型:論理型
デフォルト値:false

バージョン 4.7.0 で非推奨: この設定は警告が削除されたので削除しました。

MySQL ライブラリとサーバのバージョンが異なる場合、メインページに警告が表示されます。

この引数を true に設定することで、メッセージの表示を止めることができます。

$cfg['ReservedWordDisableWarning']
データ型:論理型
デフォルト値:false

この警告は、1つ以上のカラム名が MySQL の予約語と一致した場合に、テーブルの構造ページに表示されます。

この警告を消したい場合は、 true に設定すると警告が表示されなくなります。

$cfg['TranslationWarningThreshold']
データ型:整数型
デフォルト値:80

指定されたしきい値に達していない不完全な翻訳に対して警告を表示します。

$cfg['SendErrorReports']
データ型:文字列型
デフォルト値:'ask'

可能な値は次の通りです。

  • ask
  • always
  • never

JavaScript エラー報告の既定の動作を設定します。

ユーザが同意すれば、 JavaScript の実行中にエラーが検出されるたび、エラーレポートが phpMyAdmin チームに送信されることがあります。

デフォルトの設定では 'ask' は新しいエラー報告があるたびにユーザに確認を求めます。しかし、このパラメータを 'always' に設定すると確認を求めずにエラーレポートを送信することができますし、 'never' に設定するとエラーレポートを送信しません。

この設定項目は、設定ファイルとユーザ設定の両方で利用できます。マルチユーザインストールの責任者がこの機能をすべてのユーザに対して無効にしたい場合は、 'never' を設定し、 $cfg['UserprefsDisallow'] 設定項目の配列の値の一つに 'SendErrorReports' を含める必要があります。

$cfg['ConsoleEnterExecutes']
データ型:論理型
デフォルト値:false

これを true に設定すると、ユーザが Ctrl+Enter の代わりに Enter キーを押すことでクエリを実行できるようになります。改行は Shift+Enter で挿入することができます。

コンソールの動作は、コンソールの設定インタフェースを使用して一時的に変更することができます。

$cfg['AllowThirdPartyFraming']
データ型:論理型|文字列型
デフォルト値:false

これを true に設定すると、 phpMyAdmin をフレーム内に表示することを許可しますが、クロスフレームスクリプト攻撃やクリックジャックを可能にする潜在的なセキュリティホールにもなりえます。これを 'sameorigin' に設定すると、他の文書であれば文書が同じドメインのものであっても、 phpMyAdmin をフレーム内に表示することを防止します。

サーバ接続設定

$cfg['Servers']
データ型:配列型
デフォルト値:以下に示すような設定のサーバの配列

バージョン 1.4.2 以降、phpMyAdmin は複数の MySQL サーバを管理できるようになっています。そのために追加されたのが $cfg['Servers'] 配列です。ここにはさまざまなサーバへのログイン情報が格納されます。例えば、最初の $cfg['Servers'][$i]['host'] には最初のサーバのホスト名が、2 番目の $cfg['Servers'][$i]['host'] には 2 番目のサーバのホスト名が入ります。 config.inc.php には必要なだけの数の定義を追加できますので、ブロックや必要な部分をコピーしいてください (すべての設定を定義する必要はありません。必要な部分のみ変更してください)。

注釈

$cfg['Servers'] の配列は $cfg['Servers'][1] から始まります。 cfg['Servers'][0] は使用しないでください。複数のサーバが必要な場合は、以下の部分を何度かコピーしてください ($iのインクリメントを含む)。サーバの配列を完全に定義する必要はなく、変更したい値を定義するだけです。

$cfg['Servers'][$i]['host']
データ型:文字列型
デフォルト値:'localhost'

$i 番目の MySQL サーバのホスト名または IP アドレスが入ります。 例えば localhost です。

可能な値は次の通りです。

  • ホスト名、例えば 'localhost''mydb.example.org'
  • IP アドレス、例えば '127.0.0.1''192.168.10.1'
  • IPv6 アドレス、例えば 2001:cdba:0000:0000:0000:0000:3257:9652
  • ドット - '.'、例えば、 Windows システムで名前付きパイプを使用
  • 空文字列 - ''、このサーバを無効にする

注釈

ホスト名 localhost は MySQL によって特別に扱われ、ソケットベースの接続プロトコルを使用します。 TCP/IP ネットワークを利用するには、 127.0.0.0.1db.example.com などの IP アドレスやホスト名を使用してください。ソケットへのパスは $cfg['Servers'][$i]['socket'] で設定できます。

$cfg['Servers'][$i]['port']
データ型:文字列型
デフォルト値:''

$i 番目の MySQL サーバのポート番号。デフォルトは 3306 (空白のまま)。

注釈

ホスト名を localhost にすると、 MySQL はポート番号を無視してソケット接続しますので、デフォルトとは別のポートで接続したい場合は 127.0.0.1 または実際のホスト名を $cfg['Servers'][$i]['host'] に記入してください。

$cfg['Servers'][$i]['socket']
データ型:文字列型
デフォルト値:''

適切にソケットを使用するには、MySQL の設定などを確認してください。 mysql コマンドラインクライアントを使用して、 status コマンドの発行してください。その結果の中に、ソケットが使われているかが表示されます。

注釈

$cfg['Servers'][$i]['host']localhost に設定されているときのみ効果があります。

$cfg['Servers'][$i]['ssl']
データ型:論理型
デフォルト値:false

phpMyAdmin とMySQL サーバとの間の接続を安全にするために SSL を有効にするかどうか。

'mysql' 拡張モジュールを使用している場合、残りの 'ssl...' 設定オプションはどれも適用されません。

このオプションを使う場合は 'mysqli' 拡張モジュールを使うことを強くお勧めします。

$cfg['Servers'][$i]['ssl_key']
データ型:文字列型
デフォルト値:NULL

MySQL サーバへの接続に SSL を使用する場合のクライアントキーファイルへのパス。これは、サーバに対してクライアントを認証するために使用されます。

例:

$cfg['Servers'][$i]['ssl_key'] = '/etc/mysql/server-key.pem';
$cfg['Servers'][$i]['ssl_cert']
データ型:文字列型
デフォルト値:NULL

MySQL サーバへ SSL で接続する際のクライアント資格情報ファイルへのパス。これはクライアントからサーバへ認証する際に使用されます。

$cfg['Servers'][$i]['ssl_ca']
データ型:文字列型
デフォルト値:NULL

MySQL サーバへの接続に SSL を使用する場合の CA ファイルへのパス。

$cfg['Servers'][$i]['ssl_ca_path']
データ型:文字列型
デフォルト値:NULL

PEM 形式の信頼できる SSL CA 証明書を含むディレクトリ。

$cfg['Servers'][$i]['ssl_ciphers']
データ型:文字列型
デフォルト値:NULL

MySQL サーバに対する SSL 接続で利用できる暗号のリスト。

$cfg['Servers'][$i]['ssl_verify']
データ型:論理型
デフォルト値:true

バージョン 4.6.0 で追加: phpMyAdmin 4.6.0 以降で対応しています。

PHP のインストールで MySQL ネイティブドライバ (mysqlnd) を使用している場合、 MySQL サーバは 5.6 以降であり、SSL 証明書が自己署名されている場合、検証のために SSL 接続が失敗する可能性があります。これを false に設定すると、検証チェックが無効になります。

PHP 5.6.0 以降では、サーバ名が証明書の CN と一致するかどうかも確認されます。現在、完全な SSL 検証を無効にせずに、このチェックを無効にする方法はありません。

警告

証明書の検証を無効にすると、 SSL を使用する目的が無効になります。これにより、接続は中間攻撃者に対して脆弱になります。

注釈

このフラグは PHP 5.6.16 以降でのみ有効です。

$cfg['Servers'][$i]['connect_type']
データ型:文字列型
デフォルト値:'tcp'

バージョン 4.7.0 で非推奨: この設定は 4.7.0 以降では使用されなくなりました。 MySQL はホスト名に基づいて接続種別を決定するため、想定外の結果を導く可能性があるためです。代わりに、 $cfg['Servers'][$i]['host'] を設定してください。

MySQL サーバで利用する接続タイプが入ります。選択肢は 'socket''tcp' です。デフォルトが tcp になっているのは、どんな MySQL サーバでもほぼ確実に利用できるためです。ソケットの方はプラットフォームによっては対応していません。

$cfg['Servers'][$i]['compress']
データ型:論理型
デフォルト値:false

MySQL サーバとの接続に圧縮プロトコルを使うかどうかが入ります(実験段階です)。

$cfg['Servers'][$i]['controlhost']
データ型:文字列型
デフォルト値:''

指定すると、phpMyAdmin 環境保管領域に対して代替ホストが使えるようになります。

$cfg['Servers'][$i]['controlport']
データ型:文字列型
デフォルト値:''

環境保管領域を保持するホストに別なポートを使用して接続することを許可します。

$cfg['Servers'][$i]['controluser']
データ型:文字列型
デフォルト値:''
$cfg['Servers'][$i]['controlpass']
データ型:文字列型
デフォルト値:''

この特殊なアカウントは、 phpMyAdmin 環境保管領域 にアクセスするために使用されます。単一のユーザの場合は必要ありませんが、 phpMyAdmin が共有されている場合は、このユーザにのみ phpMyAdmin 環境保管領域 へのアクセス権を与え、それを使用するように phpMyAdmin を設定することをお勧めします。すべてのユーザが phpMyAdmin 環境保管領域 に直接アクセスすることなく、機能が使用できるようになります。

バージョン 2.2.5 で変更: 以前は stduser および stdpass と呼ばれていました

$cfg['Servers'][$i]['control_*']
データ型:混合型

バージョン 4.7.0 で追加.

接頭辞 control_ のついた設定を使用すると、制御リンク (phpMyAdmin 環境保管領域 へのアクセスに使用) の MySQL 接続設定を変更できます。

これを使用することで、デフォルトでユーザと同じ引数を使用する制御接続の任意の側面を変更できます。

例えば、制御接続用に SSL を設定できます。

// Enable SSL
$cfg['Servers'][$i]['control_ssl'] = true;
// Client secret key
$cfg['Servers'][$i]['control_ssl_key'] = '../client-key.pem';
// Client certificate
$cfg['Servers'][$i]['control_ssl_cert'] = '../client-cert.pem';
// Server certification authority
$cfg['Servers'][$i]['control_ssl_ca'] = '../server-ca.pem';
$cfg['Servers'][$i]['auth_type']
データ型:文字列型
デフォルト値:'cookie'

このサーバで認証するのに config、 cookie、 HTTP、サインオンのいずれを使用するか。

  • 'config' 認証 ($auth_type = 'config') は従来からの方法です。ユーザ名とパスワードは config.inc.php に保存されます。
  • 'cookie' 認証モード ($auth_type = 'cookie') では、クッキーによって有効な MySQL ユーザとしてログインできます。
  • 'http' 認証では、 HTTP-Auth によって有効な MySQL ユーザとしてログインできます。
  • 'signon' 認証モード ($auth_type = 'signon') では、あらかじめ準備された PHP セッションデータまたは提要された PHP スクリプトを使用してログインできます。
$cfg['Servers'][$i]['auth_http_realm']
データ型:文字列型
デフォルト値:''

auth_type = http を使用した場合、この項目で、ユーザに表示される HTTP の Basic 認証の領域名を定義することができます。設定で明示的に指定されていない場合には、 "phpMyAdmin " と $cfg['Servers'][$i]['verbose'] または $cfg['Servers'][$i]['host'] のいずれかを組み合わせた文字列が使用されます。

$cfg['Servers'][$i]['auth_swekey_config']
データ型:文字列型
デフォルト値:''

バージョン 3.0.0.0 で追加: この設定は $cfg['Servers'][$i]['auth_feebee_config'] に改名されました。改名されたのは 3.0.0.0 より前です。

バージョン 4.6.4 で非推奨: この設定は、サーバーがすでに稼働しておらず、また正しく動作していなかったため、削除されました。

バージョン 4.0.10.17 で非推奨: この設定はメンテナンスリリースで削除されました。サーバーがすでに稼働しておらず、正しく動作していなかったためです。

ハードウェア認証用の Swekey ID とログイン名を含むファイルの名前を指定します。空欄にすると、この機能が無効になります。

$cfg['Servers'][$i]['user']
データ型:文字列型
デフォルト値:'root'
$cfg['Servers'][$i]['password']
データ型:文字列型
デフォルト値:''

$cfg['Servers'][$i]['auth_type'] が 'config' に設定されている場合は、 MySQL サーバに接続するときに phpMyAdmin が利用するユーザ名/パスワードの組が入ります。このユーザ名/パスワードの組は、 HTTP またはクッキー認証を利用する場合は必要ありませんので、空欄にしておいてください。

$cfg['Servers'][$i]['nopassword']
データ型:論理型
デフォルト値:false

バージョン 4.7.0 で非推奨: この設定は予期しない結果を生み出す可能性があるため、削除されました。

パスワードを使用してログインが失敗したときにパスワードなしでログインしようとするとを許可します。これは、HTTP 認証と一緒に使用することができます。MySQL に接続する手段の一つとして、ユーザ名と空のパスワードを使用して認証を行います。パスワードログインを行わないというわけではなく、パスワードログインが最初に試され、最後の手段としてパスワードなし方式が試されます。

注釈

It is possible to allow logging in with no password with the $cfg['Servers'][$i]['AllowNoPassword'] directive.

$cfg['Servers'][$i]['only_db']
データ型:文字列型または配列型
デフォルト値:''

データベース名 (の配列) を設定すると、ユーザにはそのデータベースしか見えなくなります。phpMyAdmin 2.2.1 以降、このデータベース名には MySQL のワイルドカード文字 ("_" と "%") を含めることができます。ワイルドカード文字を実際の文字として使う場合はエスケープしてください (すなわち 'my_db' ではなく、 'my\_db' のようにします)。

この設定はサーバの負荷を下げるのに効果的です。利用できるデータベースのリストを作成する際に MySQL にリクエストを送る必要がなくなるためです。ただし、 これは MySQL データベースサーバの権限の規則に代わるものではありません。 つまり、設定すればそのデータベースだけが表示されるようになりますが、 ほかのすべてのデータベースが使えなくなるわけではありません。

複数のデータベースを使用した例です。

$cfg['Servers'][$i]['only_db'] = ['db1', 'db2'];

バージョン 4.0.0 で変更: 以前のバージョンでは、この設定項目でデータベース名の表示順序を指定できました。

$cfg['Servers'][$i]['hide_db']
データ型:文字列型
デフォルト値:''

権限のないユーザからデータベースを隠すための正規表現です。これはリストから見えなくするだけで、ユーザがそれらに (SQL クエリ領域などを使用して) アクセスすることはます。アクセスを制限するには MySQL 権限システムを使用してください。例えば、すべてのデータベースから "a" の文字で始まるデータベースを隠すには、次のようにします。

$cfg['Servers'][$i]['hide_db'] = '^a';

”db1" と "db2" の両方を非表示にするには、次のようにします。

$cfg['Servers'][$i]['hide_db'] = '^(db1|db2)$';

正規表現の詳細は、PHP リファレンスマニュアルの PCRE のパターン構文 の項にあります。

$cfg['Servers'][$i]['verbose']
データ型:文字列型
デフォルト値:''

複数のサーバエントリがある場合にのみ有用です。設定しておくと、メインページのプルダウンメニューに、ホスト名ではなく、この文字列が表示されます。例えば、システム上のいくつかのデータベースのみ表示させる場合には便利です。HTTP 認証の場合、 ASCII 文字以外はすべて無視されるかもしれません。

$cfg['Servers'][$i]['extension']
データ型:文字列型
デフォルト値:'mysqli'

バージョン 4.2.0 で非推奨: この設定は削除されました。 mysql 拡張モジュールは mysqli 拡張モジュールが利用できない場合にのみ使用されます。 5.0.0 では、 mysqli 拡張モジュールのみが利用できます。

使用する PHP の MySQL 拡張モジュールです (mysql または mysqli)。

すべてのインストールで mysqli を使用することを推奨します。

$cfg['Servers'][$i]['pmadb']
データ型:文字列型
デフォルト値:''

phpMyAdmin 環境保管領域を格納するデータベース名が入ります。

このドキュメントの phpMyAdmin 環境保管領域 の節をご覧ください。このテーブル構造の利点や、データベースの簡単な作成法、必要なテーブルが書かれています。

インストールした phpMyAdmin のユーザが 1 人だけの場合は、使用中のデータベースにこれらの特殊なテーブル群を格納することもできます。その場合は使用中のデータベース名を $cfg['Servers'][$i]['pmadb'] に記述してください。複数のユーザの場合は phpMyAdmin 環境保管領域を格納する中心データベース名を設定します。

$cfg['Servers'][$i]['bookmarktable']
データ型:文字列型または false
デフォルト値:''

バージョン 2.2.0 で追加.

バージョン 2.2.0 以降の phpMyAdmin ではブックマーククエリを利用できます。よく利用するクエリがある場合は便利です。この機能の利用を許可するには、次のようにしてください。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['relation']
データ型:文字列型または false
デフォルト値:''

バージョン 2.2.4 で追加.

バージョン 2.2.4 以降、専用の「リレーション」テーブルにどのカラムが別のテーブルのキー (外部キー) になっているか記述することができるようになりました。phpMyAdmin は現在この機能を次のような用途で使っています。

キーは数値でも文字でも可です。

この機能を利用できるようにするには、以下のようにします。

  • $cfg['Servers'][$i]['pmadb'] と phpMyAdmin 環境保管領域をセットアップする
  • $cfg['Servers'][$i]['relation'] にリレーションテーブル名を入れる
  • 一般ユーザとして phpMyAdmin を開き、この機能を使いたいそれぞれテーブルで 構造/リレーションビュー/ をクリックして、外部カラムを選択する。

この機能はこの設定を false に設定することで無効にすることができます。

注釈

現在のバージョンでは、 master_dbforeign_db と一致しなければならないことに注意してください。これらのカラムは将来クロスデータベースリレーションを開発するために用意されています。

$cfg['Servers'][$i]['table_info']
データ型:文字列型または false
デフォルト値:''

バージョン 2.3.0 で追加.

バージョン 2.3.0 以降、対応するキーにカーソルを動かしたときどのカラムをツールチップとして表示するか、専用の 'table_info' テーブルに記述できるようになりました。の設定変数には、この特殊テーブルの名前が保持されます。この機能を許可するには次のようにします。

  • $cfg['Servers'][$i]['pmadb'] と phpMyAdmin 環境保管領域をセットアップする
  • テーブル名を $cfg['Servers'][$i]['table_info'] に入れます。(例: pma__table_info)
  • それから、この機能を利用したいテーブルごとに「構造⇒リレーションビュー⇒表示するカラムの選択」をクリックして、カラムを選択します。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['table_coords']
データ型:文字列型または false
デフォルト値:''

デザイナ機能では、ページレイアウトを保存することができます。拡張デザイナメニューの「ページを保存」または「ページを名前を付けて保存」ボタンを押すことで、レイアウトをカスタマイズし、次回デザイナを使用するときに読み込ませることができます。そのレイアウトはこのテーブルに保存されます。さらに、このテーブルは PDF リレーションのエクスポート機能を使用するためにも必要です。詳しくは $cfg['Servers'][$i]['pdf_pages'] を参照してください。

$cfg['Servers'][$i]['pdf_pages']
データ型:文字列型または false
デフォルト値:''

バージョン 2.3.0 で追加.

バージョン 2.3.0 以降、phpMyAdmin はテーブル間のリレーションを表示する PDF ページを作成できるようになりました。このためには "pdf_pages" (作成する PDF ページの情報の保管用) と "table_coords" (PDF スキーマ出力の際に各テーブルが配置される座標の保管用) という2つのテーブルが必要となります。

この機能を利用できるようにするには、以下のようにします。

この機能はどちらかの設定を false に設定することで無効化することができます。

$cfg['Servers'][$i]['designer_coords']
データ型:文字列型
デフォルト値:''

バージョン 2.10.0 で追加: バージョン 2.10.0 より。デザイナインターフェイスが使用でき、リレーションの視覚的な管理を可能にします。

バージョン 4.3.0 で非推奨: この設定は削除され、デザイナのテーブルの位置データは $cfg['Servers'][$i]['table_coords'] に格納されるようになりました。

注釈

テーブル pma__designer_coords を phpMyAdmin の環境保管領域データベースから削除できるようになりました。設定ファイルから $cfg['Servers'][$i]['designer_coords'] を削除してください。

$cfg['Servers'][$i]['column_info']
データ型:文字列型または false
デフォルト値:''

バージョン 2.3.0 で追加.

この部分のコンテンツは更新する必要があります。バージョン 2.3.0 以降、テーブルごとに各カラムを説明するコメントを保管できるようになりました。このコメントは「印刷用画面」の際に表示されます。

バージョン 2.5.0 以降、テーブルのプロパティページやテーブルの表示機能でもコメントを利用するようになりました。カラム名の上に表示されるツールチップ(プロパティページ)や表示機能のテーブルヘッダに埋め込まれます。また、テーブルをダンプする際に表示することもできます。後述の関連する設定項目もご覧ください。

また、バージョン 2.5.0 の新機能として、MIME 変換システムがありますが、これも以下のテーブル構造をベースにしています。詳しくは 変換機能 をご覧ください。MIME 変換システムを利用する際は、 column_info テーブルに「mimetype」、「transformation」、「transformation_options」というカラムを新たに付け加える必要があります。

リリース 4.3.0 以降、新しい入力指向の変換システムが導入されました。また、古い変換システムで使用していた後方互換性のためのコードが削除されました。結果的に、以前の変換と新しい入力指向の変換システムが動作するためには column_info の更新が必要です。 phpMydmin は現在の column_info テーブルの構造を解析して自動的にアップグレードします。ただし、自動アップグレードに失敗した場合は ./sql/upgrade_column_info_4_3_0+.sql にある SQL スクリプトを使用して手動でアップグレードすることもできます。

この機能を利用できるようにするには、以下のようにします。

  • $cfg['Servers'][$i]['pmadb'] と phpMyAdmin 環境保管領域をセットアップする

  • $cfg['Servers'][$i]['column_info'] にテーブル名を設定する (例: pma__column_info)

  • 2.5.0 以前の Column_comments table テーブルを更新するには次のようにしてください。また、 config.inc.php 内の変数を $cfg['Servers'][$i]['column_comments'] から $cfg['Servers'][$i]['column_info'] に変更することを忘れないでください。

    ALTER TABLE `pma__column_comments`
    ADD `mimetype` VARCHAR( 255 ) NOT NULL,
    ADD `transformation` VARCHAR( 255 ) NOT NULL,
    ADD `transformation_options` VARCHAR( 255 ) NOT NULL;
    
  • 4.3.0 以前の Column_info テーブルを手作業で更新するには、この ./sql/upgrade_column_info_4_3_0+.sql SQL スクリプトを使用してください。

この機能はこの設定を false に設定することで無効にすることができます。

注釈

自動アップグレード機能を動作させるには $cfg['Servers'][$i]['controluser']phpmyadmin データベースに ALTER 権限を持っている必要があります。ユーザに対して権限を GRANT で許可する方法は、 MySQL 文書の GRANT を参照してください。

$cfg['Servers'][$i]['history']
データ型:文字列型または false
デフォルト値:''

バージョン 2.5.0 で追加.

バージョン 2.5.0 以降、 SQL の履歴 (phpMyAdmin インタフェースに手入力したすべてのクエリ) を保管できるようになりました。テーブルベースの履歴は利用したくない場合、JavaScript ベースの履歴を利用することもできます。

使用すると、ウィンドウを閉じるときにすべての履歴項目が削除されます。 $cfg['QueryHistoryMax'] を使うと、保持しておきたい履歴リストの上限を指定できます。このリストはログインのたびに上限値にまで切り詰められます。

クエリの履歴を利用できるのはブラウザの JavaScript が有効になっている場合のみです。

この機能を利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['recent']
データ型:文字列型または false
デフォルト値:''

バージョン 3.5.0 で追加.

バージョン 3.5.0 以降、左側のナビゲーションフレームで最近使用されたテーブルを表示することができます。データベースを選択することなく、直接テーブルへ移動することができます。 $cfg['NumRecentTables'] で最近使用したテーブルの表示できる最大数が設定できます。リストからテーブルを選択すると、指定されたページに $cfg['NavigationTreeDefaultTabTable'] 内において移動が行われます。

phpMyAdmin 環境保管領域がなくても、最近使用されたテーブルにアクセスすることができますが、ログアウトすると記録は失われてしまいます。

この機能を永続的に利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['favorite']
データ型:文字列型または false
デフォルト値:''

バージョン 4.2.0 で追加.

バージョン 4.2.0 以降では、ナビゲーションパネルで選択されたテーブルの一覧を表示することができます。これはデータベースを選択してからテーブルを選択するのではなく、直接テーブルにジャンプするのに役立ちます。一覧からテーブルを選択すると、 $cfg['NavigationTreeDefaultTabTable'] で指定されたページに移動します。

テーブルをこのリストに加えたり削除したりするのを、テーブル名の隣にある星印をクリックすることで行えるようになります。 $cfg['NumFavoriteTables'] を使用するとお気に入りのテーブルに表示される最大数を設定することができます。

phpMyAdmin 環境保管領域がなくても、テーブルのブックマークにアクセスすることができますが、ログアウトすると記録は失われてしまいます。

この機能を永続的に利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['table_uiprefs']
データ型:文字列型または false
デフォルト値:''

バージョン 3.5.0 で追加.

バージョン 3.5.0 以降、 phpMyAdmin は表示しているテーブルのさまざまな環境設定 (ソートされた $cfg['RememberSorting'] カラム、テカラムの表示順、カラムの表示有無) を覚えておくことができます。環境保管領域がなくてもこれらの機能は使用することができますが、ログアウトすると値は失われてしまいます。

これらの機能を永続的に利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['users']
データ型:文字列型または false
デフォルト値:''

phpMyAdmin がユーザ名情報をユーザグループに関連付けるために使用するテーブルです。詳細や推奨設定は $cfg['Servers'][$i]['usergroups'] の項目を参照してください。

$cfg['Servers'][$i]['usergroups']
データ型:文字列型または false
デフォルト値:''

バージョン 4.1.0 で追加.

リリース 4.1.0 以降では、メニュー項目が関連付けられた別のユーザグループを作成することができます。ユーザをこれらのグループに割り当てることができ、ログインしているユーザには、自分が割り当てられているユーザグループに対して構成されたメニュー項目のみが表示されます。そのためには、 "usergroups" (各ユーザ グループに対して許可されたメニュー項目を格納する) と "users" (ユーザとユーザ グループへの割り当てを格納する) の 2 つのテーブルが必要です。

この機能を利用できるようにするには、以下のようにします。

この機能はどちらかの設定を false に設定することで無効化することができます。

$cfg['Servers'][$i]['navigationhiding']
データ型:文字列型または false
デフォルト値:''

バージョン 4.1.0 で追加.

リリース 4.1.0 以降、ナビゲーションツリー内の項目を表示/非表示にすることができます。

この機能を利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['central_columns']
データ型:文字列型または false
デフォルト値:''

バージョン 4.3.0 で追加.

リリース 4.3.0 以降では、主要カラムのリストをデータベースごとに持つことができます。必要に応じてカラムをリストに追加/削除することができます。リスト内の主要カラムは、テーブルに新しいカラム作成したり、テーブル自体を作成したりするときに利用することができます。主要カラムのリストから選択して新しいカラムを作成し、同じカラム定義を再利用したり、同様のカラムを異なる名前で書いたりすることができます。

この機能を利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['designer_settings']
データ型:文字列型または false
デフォルト値:''

バージョン 4.5.0 で追加.

リリース 4.5.0 以降、デザイナ設定は記憶されます。「角/直リンク」、「グリッドにあわせる」、「リレーションラインの表示切替」、「すべてを大きく/小さく」、「メニューを移動する」、「ピンテキスト」に関する選択肢は永続的に記憶することができます。

この機能を利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['savedsearches']
データ型:文字列型または false
デフォルト値:''

バージョン 4.2.0 で追加.

リリース 4.2.0 以降では、定型問い合わせの検索を「データベース > クエリ」パネルから保存・読み出しできます。

この機能を利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['export_templates']
データ型:文字列型または false
デフォルト値:''

バージョン 4.5.0 で追加.

リリース 4.5.0 以降、エクスポートテンプレートの保存および読み出しができます。

この機能を利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['tracking']
データ型:文字列型または false
デフォルト値:''

バージョン 3.3.x で追加.

リリース 3.3.x 以降では、コマンド追跡機能が利用できます。これは、phpMyAdmin によって実行されたすべての SQL コマンドの追跡に役立ちます。この仕組みは、データの操作とデータ定義文のログ記録に対応しています。有効にすると、テーブルの世代を作成することができます。

世代を作成すると、2つの効果があります。

  • phpMyAdmin が構造とインデックスを含むテーブルのスナップショットを保存します。
  • phpMyAdmin がテーブルの構造やデータの変更を行うすべてのコマンドをログに記録し、これらのコマンドと版数を結び付けます。

もちろん、変更履歴を表示することもできます。 コマンド追跡 ページにすべての版に対しての詳細なレポートがあります。レポートは表示件数を絞ることができます。例えば、日付範囲などを指定することで条件内のコマンドリストを取得が行えます。ユーザ名で絞る場合は、すべての名前が対象であれば「*」を入力、名前のリストに対しては「,」で区切って入力してください。更に、(絞り込んだ) レポートをファイルまたは一時的なデータベースへエクスポートすることもできます。

この機能を利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['tracking_version_auto_create']
データ型:論理型
デフォルト値:false

SQL コマンドの追跡機能が、テーブルやビューに対して自動的に版を作成するかどうか。

これが true に設定されており、以下のようにテーブルやビューを作成したとき

  • CREATE TABLE ...
  • CREATE VIEW ...

既存の版が存在しなかった場合、追跡機能は自動的に版を生成します。

$cfg['Servers'][$i]['tracking_default_statements']
データ型:文字列型
デフォルト値:'CREATE TABLE,ALTER TABLE,DROP TABLE,RENAME TABLE,CREATE INDEX,DROP INDEX,INSERT,UPDATE,DELETE,TRUNCATE,REPLACE,CREATE VIEW,ALTER VIEW,DROP VIEW,CREATE DATABASE,ALTER DATABASE,DROP DATABASE'

使用されたときに新しい版を自動生成する文のリストを定義します。

$cfg['Servers'][$i]['tracking_add_drop_view']
データ型:論理型
デフォルト値:true

ビューを作成するときにログの最初の行に DROP VIEW IF EXISTS 文を追加するかどうか。

$cfg['Servers'][$i]['tracking_add_drop_table']
データ型:論理型
デフォルト値:true

テーブルを作成するときにログの最初の行に DROP TABLE IF EXISTS 文を追加するかどうか。

$cfg['Servers'][$i]['tracking_add_drop_database']
データ型:論理型
デフォルト値:true

データベースを作成するときにログの最初の行に DROP DATABASE IF EXISTS 文を追加するかどうか。

$cfg['Servers'][$i]['userconfig']
データ型:文字列型または false
デフォルト値:''

バージョン 3.4.x で追加.

バージョン 3.4.x より。ユーザが自分自身用の環境設定を行い、それをデータベース (phpMyAdmin 環境保管領域) に格納することを許可します。

$cfg['Servers'][$i]['pmadb'] への環境の格納が許可されていなくても、ユーザは phpMyAdmin をカスタマイズすることができますが、ブラウザのローカルストレージに設定を保存することになるか、それもできない場合はセッションの終了時までとなります。

この機能を利用できるようにするには、以下のようにします。

この機能はこの設定を false に設定することで無効にすることができます。

$cfg['Servers'][$i]['MaxTableUiprefs']
データ型:整数型
デフォルト値:100

$cfg['Servers'][$i]['table_uiprefs'] テーブルに保存できる最大行数です。

テーブルが削除されたり名前が変更されたりした場合、 $cfg['Servers'][$i]['table_uiprefs'] のデータが正しくなくなることがあります (もう存在しないテーブルを参照しているため)。 $cfg['Servers'][$i]['table_uiprefs'] の行数のみを保存し、それより古い行は自動的に削除します。

$cfg['Servers'][$i]['SessionTimeZone']
データ型:文字列型
デフォルト値:''

phpMyAdmin で使用されるタイムゾーンを設定します。空欄にすると、データベースサーバのタイムゾーンを使用します。使用可能な値は https://dev.mysql.com/doc/refman/8.0/ja/time-zone-support.html で説明しています。

これはデータベースサーバが使用するタイムゾーンが、 phpMyAdmin で使用したいタイムゾーンとは異なる場合に有用です。

$cfg['Servers'][$i]['AllowRoot']
データ型:論理型
デフォルト値:true

root のアクセスを許可するかどうか。これは下記の $cfg['Servers'][$i]['AllowDeny']['rules'] を簡略化しただけのものです。

$cfg['Servers'][$i]['AllowNoPassword']
データ型:論理型
デフォルト値:false

パスワードなしでのログインを許可するかどうか。このパラメータがデフォルト値の false であれば、 root または匿名 (空欄) ユーザが空のパスワードのままの定義で残っていたとしても、MySQL サーバへの意図しないアクセスを防ぐことができます。

$cfg['Servers'][$i]['AllowDeny']['order']
データ型:文字列型
デフォルト値:''

規則の適用順が空の場合、 IP 認証は無効になります。

規則の適用順が 'deny,allow' の場合、システムは拒否規則をすべて適用してから許可規則を適用します。アクセスは許可がデフォルトです。拒否コマンドに一致しないクライアント、許可コマンドに一致するクライアントはすべてサーバへのアクセスが許可されます。

規則の適用順が 'allow,deny' の場合、システムは許可規則をすべて適用してから拒否規則を適用します。アクセスは拒否がデフォルトです。 Allow の設定項目に一致しないクライアント、 Deny の設定項目に一致するクライアントはすべてサーバへのアクセスが拒否されます。

規則の適用順が 'explicit' の場合、認証は 'deny,allow' と同様に行われますが、追加される制限は、ホスト名/ユーザ名の組が allow 規則に含まれる 必要があり 、かつ、 deny 規則に含まれては いけません 。これは Allow/Deny 規則を利用するうえでは 最も 安全な方法です。以前は Apache で順番を指定せずに許可・拒否規則を指定することで実現していたものです。

プロキシを通しての IP アドレスの検出については $cfg['TrustedProxies'] も参照してください。

$cfg['Servers'][$i]['AllowDeny']['rules']
データ型:文字列型の配列
デフォルト値:array()

この規則の一般的な書式は次の通りです。

<'allow' | 'deny'> <username> [from] <ipmask>

すべてのユーザに一致させたい場合は、 username 欄にワイルドカードとして '%' を使うこともできます。

また、 ipmask 欄でもいくつかショートカットが利用できます (SERVER_ADDRESS の部分は、どんなウェブサーバでも利用できるとは限りませんので注意してください)。

'all' -> 0.0.0.0/0
'localhost' -> 127.0.0.1/8
'localnetA' -> SERVER_ADDRESS/8
'localnetB' -> SERVER_ADDRESS/16
'localnetC' -> SERVER_ADDRESS/24

規則のリストを空にすると、規則の適用順が 'deny,allow' の場合は 'allow % from all' と、適用順が 'allow,deny' ないし 'explicit' の場合は 'deny % from all' と等価になります。

IP アドレス のマッチング規則としては、下記のものが利用できます。

  • xxx.xxx.xxx.xxx (正確な IP アドレス)
  • xxx.xxx.xxx.[yyy-zzz] (IP アドレス の範囲)
  • xxx.xxx.xxx.xxx/nn (CIDR (Classless Inter-Domain Routing) タイプの IP アドレス)

ただし、以下は利用できません。

  • xxx.xxx.xxx.xx[yyy-zzz] (IP アドレスの一部範囲指定)

IPv6 アドレスでは、以下のものが利用できます。

  • xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx (正確な IPv6 アドレス)
  • xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:[yyyy-zzzz] (IPv6 アドレスの範囲)
  • xxxx:xxxx:xxxx:xxxx/nn (CIDR (Classless Inter-Domain Routing) タイプの IPv6 アドレス)

ただし、以下は利用できません。

  • xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx[yyy-zzz] (IPv6 アドレスの一部範囲指定)

例:

$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow bob from all'];
// Allow only 'bob' to connect from any host

$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow mary from 192.168.100.[50-100]'];
// Allow only 'mary' to connect from host 192.168.100.50 through 192.168.100.100

$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow % from 192.168.[5-6].10'];
// Allow any user to connect from host 192.168.5.10 or 192.168.6.10

$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow root from 192.168.5.50','allow % from 192.168.6.10'];
// Allow any user to connect from 192.168.6.10, and additionally allow root to connect from 192.168.5.50
$cfg['Servers'][$i]['DisableIS']
データ型:論理型
デフォルト値:false

情報を取得するための INFORMATION_SCHEMA の使用を無効にします (代わりに SHOW コマンドを使用します)。多くのデータベースが存在している場合に速度的な問題があるためです。

注釈

このオプションを有効にすると、古い MySQL サーバでは性能が飛躍的に向上する可能性があります。

$cfg['Servers'][$i]['SignonScript']
データ型:文字列型
デフォルト値:''

バージョン 3.5.0 で追加.

ログイン資格情報を取得するために実行される PHP スクリプトの名前。これは、セッションに基づくシングルサインオンに代わる手法です。このスクリプトは、ユーザ名とパスワードの一覧を返す関数 get_login_credentials を提供していて、単一のパラメータとして存在するユーザ名 (空欄も可) を受け入れる必要があります。サンプルは、 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(string $user): array
{
    /* Optionally we can use passed username */
    if (! empty($user)) {
        return [$user, 'password'];
    }

    /* Here we would retrieve the credentials */
    return ['root', ''];
}
$cfg['Servers'][$i]['SignonSession']
データ型:文字列型
デフォルト値:''

サインオン認証方式に使用されるセッションの名前です。phpMyAdmin という名前は phpMyAdmin が内部的に使用しているセッションであるため、それとは異なる名前を使用する必要があります。 $cfg['Servers'][$i]['SignonScript'] を解除しないと、こちらは機能しません。

$cfg['Servers'][$i]['SignonCookieParams']
データ型:配列型
デフォルト値:array()

バージョン 4.7.0 で追加.

他の認証システムのセッションクッキーパラメータの連想配列。他の認証システムが session_set_cookie_params() を使用していない場合は必要ありません。キーには 'lifetime'、'path'、'domain'、'secure'、'httponly' のいずれかを指定します。有効な値は session_get_cookie_params で説明されています。 $cfg['Servers'][$i]['SignonScript'] が設定されていない場合にのみ有効です。

$cfg['Servers'][$i]['SignonURL']
データ型:文字列型
デフォルト値:''

サインオン認証方式にログインするためにユーザがリダイレクトされる URL です。プロトコルを含めた絶対パスである必要があります。

$cfg['Servers'][$i]['LogoutURL']
データ型:文字列型
デフォルト値:''

ユーザがログアウト後にリダイレクトされる URL (認証方式の設定には影響しません)。プロトコルを含む絶対パスにする必要があります。

$cfg['Servers'][$i]['hide_connection_errors']
データ型:論理型
デフォルト値:false

バージョン 4.9.8 で追加.

ログインページで MySQL/MariaDB の詳細なエラーを表示するかどうか。

注釈

このエラーメッセージには、対象となるデータベースサーバーのホスト名や IP アドレスが含まれることがあり、攻撃者にネットワークに関する情報を知られてしまう可能性があります。

一般設定

$cfg['DisableShortcutKeys']
データ型:論理型
デフォルト値:false

$cfg['DisableShortcutKeys'] を true に設定することで phpMyAdmin のショートカットキーを無効にすることができます。

$cfg['ServerDefault']
データ型:整数型
デフォルト値:1

複数のサーバが設定されている場合、$cfg['ServerDefault'] にサーバ番号を設定しておくと phpMyAdmin を立ち上げたときに自動的にそのサーバに接続するようにできます。0 に設定するとログインしないでサーバのリストを表示します。

サーバが 1 つしか設定されていない場合、$cfg['ServerDefault'] はそのサーバに設定しなければなりません。

$cfg['VersionCheck']
データ型:論理型
デフォルト値:true

最新バージョンの確認を、 phpMyAdmin メインページ上で JavaScript を使用したり、 index.php?route=/version-check に直接アクセスしたりすることで行えるようにします。

注釈

この設定はベンダーが変更する可能性があります。

$cfg['ProxyUrl']
データ型:文字列型
デフォルト値:''

最新のバージョン情報を取得したり、エラーレポートを送信したりするときなど、 phpmyadmin が外部のインターネットにアクセスする必要があるときに使用するプロキシの URL です。 phpMyAdmin がインストールされているサーバがインターネットに直接アクセスできない場合に必要です。書式は "ホスト名:ポート番号" です。

$cfg['ProxyUser']
データ型:文字列型
デフォルト値:''

プロキシサーバで認証するユーザ名。デフォルトでは認証は行われません。ユーザ名が与えられた場合は、 Basic 認証が行われます。現在のところ、他の種類の認証には対応していません。

$cfg['ProxyPass']
データ型:文字列型
デフォルト値:''

プロキシサーバへログインするためのパスワード。

$cfg['MaxDbList']
データ型:整数型
デフォルト値:100

メインパネルのデータベース一覧に表示されるデータベース名の最大数。

$cfg['MaxTableList']
データ型:整数型
デフォルト値:250

メインパネルのリストに表示されるテーブル名の最大数 (エクスポートページを除く)。

$cfg['ShowHint']
データ型:論理型
デフォルト値:true

ヒントを表示するかどうか (テーブルのヘッダ部などにマウスカーソルを重ねると表示されるものです)。

$cfg['MaxCharactersInDisplayedSQL']
データ型:整数型
デフォルト値:1000

SQL クエリ表示時の最大文字数。デフォルトの制限は 1000 ですが、 BLOB を表現するのに多量の 16 進コードで表示されるのを防ぐには、このくらいで正しいでしょう。しかし、ユーザによっては 1000 文字よりも長い実際の SQL クエリを使用します。また、クエリの長さがこの制限を超えている場合、そのクエリは履歴に保存されません。

$cfg['PersistentConnections']
データ型:論理型
デフォルト値:false

持続的な接続 を使用するかどうか。

$cfg['ForceSSL']
データ型:論理型
デフォルト値:false

バージョン 4.6.0 で非推奨: この設定は phpMyAdmin 4.6.0 以降は有効ではありません。代わりにウェブサーバを設定してください。

phpMyAdmin にアクセスするときに https を強制するかどうか。リバースプロキシの設定では、これを true にすることはサポートされていません。

注釈

設定によっては (分離型の SSL プロキシやロードバランサなど)、正しくリダイレクトするために $cfg['PmaAbsoluteUri'] を設定しなければならないかもしれません。

$cfg['MysqlSslWarningSafeHosts']
データ型:配列型
デフォルト値:['127.0.0.1', 'localhost']

この検索は大文字と小文字を区別し、厳密に一致する文字列のみを検索します。 SSLを使用していないが、ローカル接続やプライベートネットワークを使用しているために安全だと分かっている場合は、ホスト名や IP アドレスをリストに追加することができます。また、デフォルトの項目を削除して自分のものだけを含めることもできます。

このチェックは $cfg['Servers'][$i]['host'] の値を使用します。

バージョン 5.1.0 で追加.

設定例

$cfg['MysqlSslWarningSafeHosts'] = ['127.0.0.1', 'localhost', 'mariadb.local'];
$cfg['ExecTimeLimit']
データ型:整数型 [秒数]
デフォルト値:300

スクリプトの実行が許可される時間を秒数で設定します。秒数を 0 にすると、時間制限がなくなります。この設定はダンプファイルのインポート/エクスポートの際に使用されますが、 PHP がセーフモードになっているときは効果がありません。

$cfg['SessionSavePath']
データ型:文字列型
デフォルト値:''

セッションデータを保存のためのパス (session_save_path PHP 引数)。

警告

このフォルダはウェブサーバを通して一般からアクセス可能にしてはいけません。セッションからプライベートデータが漏洩するリスクがあります。

$cfg['MemoryLimit']
データ型:文字列型 [バイト数]
デフォルト値:'-1'

スクリプトに割り当てることができるバイト数を設定します。 '-1' を設定すると、制限は適用されません。 '0' を設定すると、メモリの制限の変更が行われず、 php.inimemory_limit が使用されます。

この設定はダンプファイルのインポート/エクスポートをする際に使用されます。この値を極端に低くくする必要は全くありません。PHP がセーフモードになっているときは効果がありません。

また、 php.ini 内で使われているような任意の文字列を使用することができます (例: '16M')。単位の接尾辞を忘れていないか確認してください (「16」は 16 バイトを意味します)

$cfg['SkipLockedTables']
データ型:論理型
デフォルト値:false

利用しているテーブルに印をつけることで、テーブルがロックされているデータベースを表示できるようにします(3.23.30 以降)。

$cfg['ShowSQL']
データ型:論理型
デフォルト値:true

phpMyAdmin が生成する SQL クエリを表示するかどうかを定義します。

$cfg['RetainQueryBox']
データ型:論理型
デフォルト値:false

送信後もそのまま SQL クエリボックスを表示させておくかどうかを定義します。

$cfg['CodemirrorEnable']
データ型:論理型
デフォルト値:true

SQL クエリボックスに JavaScript コードエディタを使用するかどうかを定義します。 CodeMirror では構文の強調と行番号の表示ができます。ただし、いくつかの Linux ディストリビューション (Ubuntu など) で提供されている真ん中ボタンによる貼り付けは、すべてのブラウザではサポートされていません。

$cfg['LintEnable']
データ型:論理型
デフォルト値:true

バージョン 4.5.0 で追加.

実行前にパーサーを使用してクエリ内のエラーを検出するかどうかを定義します。

$cfg['DefaultForeignKeyChecks']
データ型:文字列型
デフォルト値:'default'

指定されたクエリの外部キーのチェックを無効/有効にする外部キーチェックのチェックボックスのデフォルト値です。指定可能な値は 'default', 'enable', 'disable' です。 'default' に設定すると、 MySQL 環境変数の FOREIGN_KEY_CHECKS の値が使用されます。

$cfg['AllowUserDropDatabase']
データ型:論理型
デフォルト値:false

警告

これは、これを回避する方法が常に存在するので、セキュリティ対策にはなりません。ユーザがデータベースを削除することを禁止したい場合は、対応する DROP 権限を無効にしてください。

通常ユーザ (管理者以外) に自分自身のデータベースの削除を許可するかどうかを定義します。FALSE にすると、 データベースを削除する のリンクは表示されませんし、 DROP DATABASE mydatabase すらも拒否されます。多くの顧客をかかえる ISP にとってはきわめて実用的です。

SQL クエリに対するこの制限は、MySQL の権限を使用した場合ほど厳格ではないことに注意してください。これは SQL クエリの性質によるもので、非常に複雑になる可能性があります。この設定は、厳密な権限の制限というよりも、意図しない削除を防止するのに役立つものとして見るべきです。

$cfg['Confirm']
データ型:論理型
デフォルト値:true

データが消失しそうな操作をしたときに警告 (「本当に〜してもよろしいですか」) を表示するかどうか。

$cfg['UseDbSearch']
データ型:論理型
デフォルト値:true

「データベース内の検索」を有効にするかどうかを定義します。

$cfg['IgnoreMultiSubmitErrors']
データ型:論理型
デフォルト値:false

複数のクエリを含む文のクエリのひとつが失敗したときに処理を続けるかどうかを定義します。デフォルトでは処理を中止します。

$cfg['enable_drag_drop_import']
データ型:論理型
デフォルト値:true

ドラッグ&ドロップによるインポート機能が有効になっているかどうか。有効になっている場合、ユーザがファイルをブラウザにドラッグすると、 phpMyAdmin はファイルのインポートを試みます。

$cfg['URLQueryEncryption']
データ型:論理型
デフォルト値:false

バージョン 4.9.8 で追加.

phpMyAdmin が、 URL クエリ文字列から機密データ (データベース名やテーブル名など) を暗号化するかどうかを定義します。デフォルトでは、 URL クエリ文字列を暗号化しません。

$cfg['URLQueryEncryptionSecretKey']
データ型:文字列型
デフォルト値:''

バージョン 4.9.8 で追加.

URL クエリ文字列の暗号化/復号で使用される秘密鍵。 32 バイトにしてください。

$cfg['maxRowPlotLimit']
データ型:整数型
デフォルト値:500

ズーム検索で取得される行の最大数。

メインパネル

$cfg['ShowStats']
データ型:論理型
デフォルト値:true

データベースやテーブルについてのディスク容量の使用状況や統計情報を表示するかどうかを定義します。ただし、統計情報を表示するには MySQL 3.23.3 以上が必要であり、現時点では MySQL は Berkeley DB テーブル向けの情報などを返しません。

$cfg['ShowServerInfo']
データ型:論理型|文字列型
デフォルト値:true

メインページに詳細なサーバ情報を表示するかどうかを定義します。取りうる値は次の通りです。

  • true ならばすべてのサーバ情報を表示
  • false ならばサーバ情報を非表示
  • 'database-server' ならば、データベースサーバ情報のみを表示
  • 'web-server' ならばウェブサーバ情報のみを表示

さらに、 $cfg['Servers'][$i]['verbose'] を使用することにより、より多くの情報を隠すことができます。

バージョン 6.0.0 で変更: 'database-server' および 'web-server' オプションを追加しました。

$cfg['ShowPhpInfo']
データ型:論理型
デフォルト値:false

立ち上げ時のメイン(右)フレームに、 PHP情報を表示する を表示するかどうかを定義します。

スクリプト内で ``phpinfo()``の使用を禁止するための注意点。:file:`php.ini`に含めることが必要な記述:

disable_functions = phpinfo()

警告

phpinfo ページを有効化すると、サーバの設定に関する膨大な情報を漏洩することになります。共有インストールではこれを有効にすることはお勧めしません。

これによって、インストールに対する一部のリモート攻撃が容易になる可能性があるため、必要な場合しかこれを有効化しないようにしてください。

$cfg['ShowChgPassword']
データ型:論理型
デフォルト値:true

立ち上げ時のメイン(右)フレームに、 パスワードを変更する のリンクを表示するかどうかを定義します。この設定は、直接入力された MySQL コマンドをチェックするものではありません。

なお、 config 認証モードでは、たとえ設定が有効であっても パスワードを変更する リンクは無効になります。設定ファイルに直接書き込まれたパスワードは、ログインユーザが書き換えることができないからです。

$cfg['ShowCreateDb']
データ型:論理型
デフォルト値:true

立ち上げ時のメイン(右)フレームに、データベースを作成するフォームを表示するかどうかを定義します。この設定は、直接入力された MySQL コマンドに対してチェックするわけではありません。

$cfg['ShowGitRevision']
データ型:論理型
デフォルト値:true

(もしあれば) 現在の Git リビジョンに関する情報をメインパネルに表示するかどうかを定義します。

$cfg['MysqlMinVersion']
データ型:配列型

対応している MySQL の最低バージョンを定義します。デフォルト値は phpMyAdmin チームによって選択されます。ただし、この設定項目は (ほとんどの phpMyAdmin の機能が動作する) 古い MySQL サーバとの統合を容易にするために、 Plesk コントロールパネルの開発者から依頼されたものです。

データベースの構造

$cfg['ShowDbStructureCharset']
データ型:論理型
デフォルト値:false

データベース構造ページ内のすべてのテーブルの文字セットを表示する列を表示するかどうかを定義します。

$cfg['ShowDbStructureComment']
データ型:論理型
デフォルト値:false

データベース構造ページ内のすべてのテーブルのコメントを表示する列を表示するかどうかを定義します。

$cfg['ShowDbStructureCreation']
データ型:論理型
デフォルト値:false

データベース構造ページ (テーブル一覧) において、「作成日時」カラムでいつテーブルが作成されたかを表示させるかどうかを定義します。

$cfg['ShowDbStructureLastUpdate']
データ型:論理型
デフォルト値:false

データベース構造ページ (テーブル一覧) において、「最終更新」カラムでテーブル最後に更新された時期を表示させるかどうかを定義します。

$cfg['ShowDbStructureLastCheck']
データ型:論理型
デフォルト値:false

データベース構造ページ (テーブル一覧) において、「最終検査」カラムでテーブルを最後に検査した時期を表示させるかどうかを定義します。

$cfg['HideStructureActions']
データ型:論理型
デフォルト値:true

テーブル構造の各操作を「その他 」ドロップダウンの中に隠すかどうかを定義します。

$cfg['ShowColumnComments']
データ型:論理型
デフォルト値:true

テーブル構造ビューのカラムとして、カラムのコメントを表示するかどうかを定義します。

表示モード

$cfg['TableNavigationLinksMode']
データ型:文字列型
デフォルト値:'icons'

テーブルのナビゲーションリンクにアイコン ('icons')、テキスト ('text')、または両方 ('both') のどれを表示するかを定義します。

$cfg['ActionLinksMode']
データ型:文字列型
デフォルト値:'both'

icons に設定すると、データベースおよびテーブルプロパティのリンクテキスト (表示検索挿入、など) の代わりにアイコンを表示します。アイコンとテキストの両方を表示したい場合は 'both' に設定することができます。 text に設定すると、テキストのみを表示します。

$cfg['RowActionType']
データ型:文字列型
デフォルト値:'both'

テーブルの行の操作の部分を、アイコン、テキスト、またはアイコンとテキストの両方のどれで表示するかです。値は 'icons' (アイコン)、 'text' (テキスト)、 'both' (両方) のいずれかです。

$cfg['ShowAll']
データ型:論理型
デフォルト値:false

すべての場合において、表示モードでユーザに「すべて表示 」ボタンを表示するかどうかを定義します。デフォルトでは、取得する行数が多くなりすぎることによるパフォーマンスの問題を回避するため、小さなテーブル (500 行未満) のみに表示されます。

$cfg['MaxRows']
データ型:整数型
デフォルト値:25

LIMIT 節を使用しなかった場合の結果セットの表示行数です。この場合において結果セットがこの行数を上回ったときは、「前へ 」および「次へ 」のリンクが表示されます。指定可能な値は、 25、50、100、250、500 です。

$cfg['Order']
データ型:文字列型
デフォルト値:'SMART'

昇順 (ASC)、降順 (DESC)、スマートな順番 (SMART) のいずれの方法でカラムを表示するかを定義します。スマートな順番とは、TIME、DATE、DATETIME、TIMESTAMP の場合は降順、それ以外の場合は昇順であり、これがデフォルトです。

バージョン 3.4.0 で変更: phpMyAdmin 3.4.0 以降ではデフォルト値は 'SMART' です。

$cfg['DisplayBinaryAsHex']
データ型:論理型
デフォルト値:true

表示オプション「バイナリコンテンツを 16 進数で表示する」を既定でチェックするかどうかを定義します。

バージョン 3.3.0 で追加.

バージョン 4.3.0 で非推奨: この設定は削除されました。

$cfg['GridEditing']
データ型:文字列型
デフォルト値:'double-click'

グリッド編集を起動するアクション (double-click または``click``) を定義します。 disabled の値で無効化することもできます。

$cfg['RelationalDisplay']
データ型:文字列型
デフォルト値:'K'

オプション > リレーションの初期動作を定義します。 K がデフォルトで、キーを表示するのに対し、 D はカラムを表示します。

$cfg['SaveCellsAtOnce']
データ型:論理型
デフォルト値:false

グリッド編集において、編集されたすべてのセルを一度に保存するかどうかを定義します。

編集モード

$cfg['ProtectBinary']
データ型:論理型または文字列型
デフォルト値:'blob'

テーブルの内容を表示しているときに BLOBBINARY カラムを保護して編集できないようにするかどうかを定義します。有効な値は次の通りです。

  • false はすべてのカラムの編集を許可します。
  • 'blob'BLOBS 以外のすべてのカラムの編集を許可します。
  • 'noblob'BLOBS 以外のすべてのカラムの編集を禁止します ('blob' の 逆)。
  • 'all' ですべての BINARY カラムと BLOB カラムの編集を禁止します。
$cfg['ShowFunctionFields']
データ型:論理型
デフォルト値:true

挿入/編集モードで、MySQL 関数の項目が最初から表示されるかどうかを定義します。バージョン 2.10 以降、この設定はユーザインタフェースで切り替えることができます。

$cfg['ShowFieldTypesInDataEditView']
データ型:論理型
デフォルト値:true

編集/挿入モードで、データ型の項目が最初から表示されるかどうかを定義します。この設定はユーザインタフェースで切り替えることができます。

$cfg['InsertRows']
データ型:整数型
デフォルト値:2

挿入ページから入力するデフォルトの行数を定義します。ユーザはページの下部から空行を追加または削除することで、手動でこれを変更することができます。

$cfg['ForeignKeyMaxLimit']
データ型:整数型
デフォルト値:100

外部キーに指定された項目がこの値より少ない場合は、 $cfg['ForeignKeyDropdownOrder'] の設定で記述したスタイルで外部キーのドロップダウンボックスが表示されます。

$cfg['ForeignKeyDropdownOrder']
データ型:配列型
デフォルト値:array('content-id', 'id-content')

外部キーのドロップダウン項目には、いくつかの表示方法がありますが、キーと値データの両方が表示されます。この配列には、 content-idid-content のいずれか、または両方が入ります。

エクスポートとインポートの設定

$cfg['ZipDump']
データ型:論理型
デフォルト値:true
$cfg['GZipDump']
データ型:論理型
デフォルト値:true
$cfg['BZipDump']
データ型:論理型
デフォルト値:true

ダンプファイルを作成するときに zip/GZip/BZip2 圧縮を利用できるようにするかどうかを定義します

$cfg['CompressOnFly']
データ型:論理型
デフォルト値:true

GZip/BZip2 でエクスポートを圧縮する際、逐次圧縮を許可するかどうかを定義します。比較的小さなダンプの場合は関係ありませんが、許可すると、圧縮しない限り PHP のメモリ制限にひっかかるような大きなダンプも作成できるようになります。こうして生成したファイルは GZip/BZip2 ヘッダが多くなってしまいますが、まともなプログラムならどれでも正しく処理してくれます。

$cfg['Export']
データ型:配列型
デフォルト値:array(...)

この配列はエクスポートの際のデフォルトパラメータを定義します。項目名はエクスポートページに表示されるテキストとほとんど同じですので、意味は簡単にわかるでしょう。

$cfg['Export']['format']
データ型:文字列型
デフォルト値:'sql'

デフォルトのエクスポート形式。

$cfg['Export']['method']
データ型:文字列型
デフォルト値:'quick'

エクスポートページに表示される形式について定義します。有効な値は以下の通りです。

  • quick は、設定に必要な最小限のオプションを表示します
  • custom は、設定できるすべてのオプションを表示します
  • custom-no-formcustom と同じですが、 quick エクスポートのオプションは表示されません
$cfg['Export']['compression']
データ型:文字列型
デフォルト値:'none'

デフォルトのエクスポート圧縮方式。指定できる値は、'none''zip'``'gzip'``のいずれかです。

$cfg['Export']['charset']
データ型:文字列型
デフォルト値:''

生成されるエクスポートの文字セットを定義します。デフォルトでは UTF-8 を想定して文字セット変換は行われません。

$cfg['Export']['file_template_table']
データ型:文字列型
デフォルト値:'@TABLE@'

テーブルをエクスポートする際のデフォルトのファイル名のテンプレートです。

$cfg['Export']['file_template_database']
データ型:文字列型
デフォルト値:'@DATABASE@'

データベースエクスポート用のデフォルトのファイル名テンプレートです。

$cfg['Export']['file_template_server']
データ型:文字列型
デフォルト値:'@SERVER@'

サーバをエクスポートする際のデフォルトのファイル名のテンプレートです。

$cfg['Export']['remove_definer_from_definitions']
データ型:論理型
デフォルト値:false

イベント、ビュー、ルーチン定義から DEFINER 句を削除します。

バージョン 5.2.0 で追加.

$cfg['Import']
データ型:配列型
デフォルト値:array(...)

この配列はインポートの際のデフォルトパラメータを定義します。項目名はインポートページに表示されるテキストとほとんど同じですので、意味は簡単にわかるでしょう。

$cfg['Import']['charset']
データ型:文字列型
デフォルト値:''

インポート用の文字セットを定義します。デフォルトでは UTF-8 を仮定し、文字セット変換は行われません。

$cfg['Schema']
データ型:配列型
デフォルト値:array(...)
$cfg['Schema']['format']
データ型:文字列型
デフォルト値:'pdf'

Defines the default format for schema export. Possible values are 'pdf', 'eps', 'dia' or 'svg'.

タブ表示設定

$cfg['TabsMode']
データ型:文字列型
デフォルト値:'both'

メニュータブにアイコン ('icons')、テキスト ('text')、または両方 ('both') のどれを表示するかを定義します。.

$cfg['PropertiesNumColumns']
データ型:整数型
デフォルト値:1

データベースのプロパティを表示する際に何カラム分のテーブルを表示するか。 1 より大きい値に設定した場合、表示領域を広げるためデータベースのタイプは表示されなくなります。

$cfg['DefaultTabServer']
データ型:文字列型
デフォルト値:'welcome'

デフォルトでサーバビューに表示されるタブを定義します。指定可能な値はローカライズされた次のものと同等です。

  • welcome (複数ユーザのセットアップに推奨)
  • databases,
  • status
  • variables
  • privileges
$cfg['DefaultTabDatabase']
データ型:文字列型
デフォルト値:'structure'

デフォルトでデータベースビューに表示されるタブを定義します。指定可能な値はローカライズされた次のものと同等です。

  • structure
  • sql
  • search
  • operations
$cfg['DefaultTabTable']
データ型:文字列型
デフォルト値:'browse'

デフォルトでテーブルビューに表示されるタブを定義します。指定可能な値はローカライズされた次のものと同等です。

  • structure
  • sql
  • search
  • insert
  • browse

PDF オプション

$cfg['PDFPageSizes']
データ型:配列型
デフォルト値:array('A3', 'A4', 'A5', 'letter', 'legal')

PDF ページを生成するのに利用できる紙の大きさの配列です。

これを変更する必要はありません。

$cfg['PDFDefaultPageSize']
データ型:文字列型
デフォルト値:'A4'

PDF ページの生成時に使用するデフォルトのページの大きさです。有効な値は $cfg['PDFPageSizes'] にあるいずれかです。

言語

$cfg['DefaultLang']
データ型:文字列型
デフォルト値:'en'

ブラウザーやユーザーが定義していない場合に使用するデフォルトの言語を定義します。対応する言語ファイルは、 locale/code/LC_MESSAGES/phpmyadmin.mo に存在しなければなりません。

$cfg['DefaultConnectionCollation']
データ型:文字列型
デフォルト値:'utf8mb4_general_ci'

ユーザが定義していない場合に使用するデフォルトの接続の照合順序を定義します。設定可能な値については 文字セットに関する MySQL のドキュメント を参照してください。

$cfg['Lang']
データ型:文字列型
デフォルト値:設定なし

強制的に使用する言語です。対応する言語ファイルは、 locale/code/LC_MESSAGES/phpmyadmin.mo に存在しなければなりません。

$cfg['FilterLanguages']
データ型:文字列型
デフォルト値:''

利用可能な言語の一覧を与えられた正規表現にマッチするものに限定します。例えば、チェコ語と英語のみに限定したければ、フィルタを '^(cs|en)' に設定します。

$cfg['RecodingEngine']
データ型:文字列型
デフォルト値:'auto'

文字セットの変換にどの関数を利用するかを選択できます。可能な値は次の通りです。

  • 'auto' - automatically use available one (first is tested iconv, then mbstring)
  • 'iconv' - use iconv or libiconv functions
  • 'mb' - use mbstring extension
  • 'none' - disable encoding conversion

文字セットの変換が有効の場合、ファイルをエクスポートするときに文字セットを選択できるように、エクスポート/インポートページでプルダウンメニューが有効になります。このメニューのデフォルト値は $cfg['Export']['charset']$cfg['Import']['charset'] で設定されているものです。

バージョン 6.0.0 で変更: Support for the Recode extension has been removed. The 'recode' value is ignored and the default value ('auto') is used instead.

$cfg['IconvExtraParams']
データ型:文字列型
デフォルト値:'//TRANSLIT'

文字セット変換で利用する iconv 向けのパラメータを指定します。詳しくは iconv のドキュメント をご覧ください。デフォルトでは //TRANSLIT が使用されていて、無効な文字は書き直しが行われます。

$cfg['AvailableCharsets']
データ型:配列型
デフォルト値:array(...)

Available character sets for MySQL conversion. You can add your own (any of supported by mbstring/iconv) or remove these which you don't use. Character sets will be shown in same order as here listed, so if you frequently use some of these move them to the top.

ウェブサーバ設定

$cfg['OBGzip']
データ型:文字列型/論理型
デフォルト値:'auto'

HTTP 転送の速度を上げるために GZip 出力バッファリングを使用するかどうかを定義します。 true/false に設定すると有効/無効になります。 (文字列で) 'auto' にすると、phpMyAdmin は出力バッファリングを有効にしようとしますが、ブラウザの方で何かバッファリングに問題が発生した場合は自動的に無効にします。IE6 に特定のパッチをあてると、バッファリングを有効にしたときにデータが壊れる問題があることが分かっています。

$cfg['TrustedProxies']
データ型:配列型
デフォルト値:array()

$cfg['Servers'][$i]['AllowDeny']['order'] で信頼されているプロキシと信頼されているプロキシおよび HTTP ヘッダのリストです。このリストはデフォルトでは空です。プロキシ越しの IP アドレスの規則を使用したい場合には、信頼されたプロキシサーバで埋める必要があります。

次の例では、 phpMyAdmin がプロキシ 1.2.3.4 からきた HTTP_X_FORWARDED_FOR (X-Forwarded-For) ヘッダを信頼するように指定しています。

$cfg['TrustedProxies'] = ['1.2.3.4' => 'HTTP_X_FORWARDED_FOR'];

$cfg['Servers'][$i]['AllowDeny']['rules'] の設定項目は、通常通りクライアントの IP アドレスを使用します。

$cfg['GD2Available']
データ型:文字列型
デフォルト値:'auto'

GD ≧ 2 が利用できるかどうかを指定します。利用できる場合、MIME 変換の際に活用できます。使用可能な値は次の通りです。

  • auto - 自動検出
  • yes - GD 2 関数が利用できます
  • no - GD 2 関数は利用できません
$cfg['CheckConfigurationPermissions']
データ型:論理型
デフォルト値:true

通常、設定ファイルのアクセス許可をチェックして、誰でも書き込み可能でないことを確認します。しかしながら、Windows 以外のサーバ上でマウントされた NTFS ファイルシステムに phpMyAdmin がインストールされている場合は、パーミッションが間違っているようなときでも、実際には検出することができません。この場合、システム管理者はこのパラメータを false に設定します。

$cfg['LinkLengthLimit']
データ型:整数型
デフォルト値:1000

リンクの URL の長さを制限します。長さがこの制限を超えた場合、ボタンつきのフォームに置き換えられます。一部のウェブサーバ (IIS) は長い URL に問題があるため、この設定が必要となります。

$cfg['CSPAllow']
データ型:文字列型
デフォルト値:''

Content Security Policy ヘッダで許可されているスクリプトや画像の source に含める追加の文字列です。

これは、外部の JavaScript ファイルを config.footer.inc.php または config.header.inc.php に含める場合に役立ちます。これは通常、 Content Security Policy では許可されていません。

一部のサイトを許可するには、文字列の中に列挙するだけです。

$cfg['CSPAllow'] = 'example.com example.net';

バージョン 4.0.4 で追加.

$cfg['DisableMultiTableMaintenance']
データ型:論理型
デフォルト値:false

データベースの構造ページにおいて、複数のテーブルをマークして多くのテーブルを最適化するような操作を選択することができます。この操作はサーバの動作を遅くする可能性があるので、これを true に設定することで、この種の複数のメンテナンス操作ができなくします。

テーマ設定

themes/themename/scss/_variables.scss を直接変更してください。ただし、変更は次の更新で上書きされます。

デザインのカスタマイズ

$cfg['NavigationTreePointerEnable']
データ型:論理型
デフォルト値:true

true に設定すると、ナビゲーションパネルの項目にマウスポインタを合わせると、その項目がマークされます (背景が強調表示されます)。

$cfg['BrowsePointerEnable']
データ型:論理型
デフォルト値:true

true に設定すると、参照ページの行にカーソルを合わせたときに、その行がマークされます (背景が強調表示されます)。

$cfg['BrowseMarkerEnable']
データ型:論理型
デフォルト値:true

true に設定すると、チェックボックスを使用して行が選択されたとき、データ行がマークされます (背景が強調表示されます)。

$cfg['LimitChars']
データ型:整数型
デフォルト値:50

表示ページで、数字以外のフィールドに表示する最大文字数です。表示ページ内のトグルボタンでオフにすることもできます。

データ型:文字列型
デフォルト値:'left'

テーブルの内容を表示しているとき、行に関するリンク (編集、複製、削除) をどこに表示するかを定義します (左側 (left)、右側 (right)、左右両側 (both)、なし (nowhere) が設定できます)。

$cfg['RowActionLinksWithoutUnique']
データ型:論理型
デフォルト値:false

選択範囲に ユニークキー がない場合でも、複数の行操作を行うための各行のリンク (編集、コピー、削除) やチェックボックスを表示するかどうかを指定します。ユニークキーがない場合に行操作を使用すると、行を正確に選択する方法が保証されていないため、別な行やより多くの行が影響を受けることになる可能性があります。

$cfg['RememberSorting']
データ型:論理型
デフォルト値:true

有効にすると、表示している各テーブルのソートが記憶されます。

$cfg['TablePrimaryKeyOrder']
データ型:文字列型
デフォルト値:'NONE'

これは 主キー を持つテーブルで、ソート順が外部的に定義されていない場合のデフォルトのソート順を定義します。指定可能な値は ['NONE', 'ASC', 'DESC'] のいずれかです。

$cfg['ShowBrowseComments']
データ型:論理型
デフォルト値:true
$cfg['ShowPropertyComments']
データ型:論理型
デフォルト値:true

対応する変数を true に設定すると、表示またはプロパティでカラムのコメントが表示できるようになります。表示モードの場合、コメントはヘッダの中に表示されます。プロパティモードの場合、コメントはカラム名の下に CSS で整形された破線を使用して表示されます。コメントはカラムのツールチップとしても表示されます。

$cfg['FirstDayOfCalendar']
データ型:整数型
デフォルト値:0

これはカレンダーにおける週の最初の曜日を定義します。数値は 0 から 6 までを設定することができ、それぞれ7つの曜日、日曜日から土曜日までを表します。この値は:guilabel:サーバの設定 -> 機能 -> 一般 -> カレンダーの最初の曜日フィールド でユーザが設定することもできます。

テキスト入力項目

$cfg['CharEditing']
データ型:文字列型
デフォルト値:'input'

CHAR カラムと VARCHAR カラムでどちらの編集用コントロールを利用するか定義します。データの編集と、構造の編集のデフォルト値にも適用されます。指定可能な値は次の通りです。

  • input - テキストのサイズを MySQL のカラムのサイズまでに制限できますが、カラムに改行があると問題になります
  • textarea - カラムに改行があっても問題ありませんが、長さの制限はできません
$cfg['MinSizeForInputField']
データ型:整数型
デフォルト値:4

CHAR および VARCHAR カラムに対する入力項目の最小サイズを定義します。

$cfg['MaxSizeForInputField']
データ型:整数型
デフォルト値:60

CHAR および VARCHAR カラムに対する入力項目の最大サイズを定義します。

$cfg['TextareaCols']
データ型:整数型
デフォルト値:40
$cfg['TextareaRows']
データ型:整数型
デフォルト値:15
$cfg['CharTextareaCols']
データ型:整数型
デフォルト値:40
$cfg['CharTextareaRows']
データ型:整数型
デフォルト値:7

testarea の桁数と行数の数値です。この値は SQL クエリの textarea の場合は 2 倍に、クエリウインドウ内の SQL 用 textarea の場合は 1.25 倍になります。

Char* の値は CHAR と VARCHAR を編集する際に使われます ($cfg['CharEditing'] でそのように設定されている場合)。

バージョン 5.0.0 で変更: デフォルト値は 2 から 7 に変更されました。

$cfg['LongtextDoubleTextarea']
データ型:論理型
デフォルト値:true

LONGTEXT カラムの textarea のサイズを倍にするかどうかを定義します。

$cfg['TextareaAutoSelect']
データ型:論理型
デフォルト値:false

クリックしたときにクエリボックスの textarea 全体を選択するかどうかを定義します。

$cfg['EnableAutocompleteForTablesAndColumns']
データ型:論理型
デフォルト値:true

SQL クエリボックス内でテーブル名やカラム名の自動補完を有効にするかどうかです。

SQL クエリボックス設定

$cfg['SQLQuery']['Edit']
データ型:論理型
デフォルト値:true

SQL クエリボックスにクエリを変更する編集リンクを表示するかどうか。

$cfg['SQLQuery']['Explain']
データ型:論理型
デフォルト値:true

SQL クエリボックスに SELECT クエリを EXPLAIN するリンクを表示するかどうか。

$cfg['SQLQuery']['ShowAsPHP']
データ型:論理型
デフォルト値:true

SQL クエリボックスにクエリを PHP コードで形成するリンクを表示するかどうか。

$cfg['SQLQuery']['Refresh']
データ型:論理型
デフォルト値:true

SQL クエリボックスにクエリを再描画するリンクを表示するかどうか。

ウェブサーバのアップロード/保存/インポートディレクトリ

PHP がセーフモードになっている場合は、 phpMyAdmin スクリプトの所有者と同じユーザが所有者になっていなければなりません。

phpMyAdmin がインストールされているディレクトリに open_basedir 制限が適用される場合は、 PHP インタプリタがアクセスできるディレクトリに一時ディレクトリを作成する必要があります。

セキュリティ上の理由から、すべてのディレクトリをウェブサーバで公開されているツリーの外にしてください。このディレクトリがウェブサーバで公開されるのが避けられない場合は、ウェブサーバの設定 (例えば .htaccess ファイルまたは web.config ファイルを使用するなど) によってアクセスを制限するか、少なくとも空の index.html ファイルをそこに配置すれば、ディレクトリの一覧表示は不可能になります。ただし、ウェブサーバがディレクトリにアクセスできる限り、攻撃者はファイル名を推測してファイルをダウンロードすることができます。

$cfg['UploadDir']
データ型:文字列型
デフォルト値:''

phpMyAdmin 以外の方法 (例えば FTP) でアップロードした SQL ファイルのあるディレクトリ名。このディレクトリにあるファイルは、データベース名またはテーブル名をクリックしてから、インポートタブをクリックして表示されるドロップダウンボックスより利用できます。

ユーザごとにディレクトリを変えたい場合は、%u を使うとユーザ名に置換されます。

なお、ファイル名の末尾は必ず ".sql" (圧縮形式のサポートが有効になっている場合は ".sql.bz2" や ".sql.gz") でなければなりません。

この機能はファイルが大きすぎて HTTP でアップロードできないときや、PHP のファイルアップロード機能が無効になっている場合に有用です。

警告

このディレクトリのセットアップ方法と使用を安全にする方法については、この節の冒頭 (ウェブサーバのアップロード/保存/インポートディレクトリ) を参照してください。

$cfg['SaveDir']
データ型:文字列型
デフォルト値:''

エクスポートされたファイルを保存するウェブサーバのディレクトリ名です。

ユーザごとにディレクトリを指定したい場合は、 %u を使うとユーザ名に置換されます。

このディレクトリは存在しており、ウェブサーバの実行ユーザで書き込みできるようになっていなければなりません。

警告

このディレクトリのセットアップ方法と使用を安全にする方法については、この節の冒頭 (ウェブサーバのアップロード/保存/インポートディレクトリ) を参照してください。

$cfg['TempDir']
データ型:文字列型
デフォルト値:'./tmp/'

一時ファイルを保管可能なディレクトリの名前です。現在は以下のような様々な目的に使用されています。

このディレクトリは、実行されているウェブサーバにおいて必要なユーザのみアクセスできるよう、可能な限り厳格な権限を有している必要があります。root 権限を持っている場合は、このディレクトリの所有者としてウェブユーザを設定し、ウェブユーザだけでアクセスできるようにすればいいだけです。

chown www-data:www-data tmp
chmod 700 tmp

ディレクトリの所有者を変更できない場合は、 ACL を使用して同様の設定を実現できます。

chmod 700 tmp
setfacl -m "g:www-data:rwx" tmp
setfacl -d -m "g:www-data:rwx" tmp

上記のどちらも動作しない場合、ディレクトリに対して chmod 777 と設定することもできますが、そうするとシステム上のほかのユーザが、このディレクトリ内のデータの読み書きできるようになるリスクが生じる可能性があります。

警告

このディレクトリのセットアップ方法と使用を安全にする方法については、この節の冒頭 (ウェブサーバのアップロード/保存/インポートディレクトリ) を参照してください。

様々な表示設定

$cfg['RepeatCells']
データ型:整数型
デフォルト値:100

X セルごとにヘッダを挿入します。0 の場合は繰り返しません。

$cfg['EditInWindow']
データ型:論理型
デフォルト値:true

バージョン 4.3.0 で非推奨: この設定は削除されました。

$cfg['QueryWindowWidth']
データ型:整数型
デフォルト値:550

バージョン 4.3.0 で非推奨: この設定は削除されました。

$cfg['QueryWindowHeight']
データ型:整数型
デフォルト値:310

バージョン 4.3.0 で非推奨: この設定は削除されました。

$cfg['QueryHistoryDB']
データ型:論理型
デフォルト値:false
$cfg['QueryWindowDefTab']
データ型:文字列型
デフォルト値:'sql'

バージョン 4.3.0 で非推奨: この設定は削除されました。

$cfg['QueryHistoryMax']
データ型:整数型
デフォルト値:25

$cfg['QueryHistoryDB']true に設定した場合、ユーザのクエリはすべてテーブルに記録されます。ただし、このテーブルはユーザが作成する必要があります ($cfg['Servers'][$i]['history'] を参照)。 false に設定した場合、フォームにはすべてのクエリが追加されますが、保存されるのはウインドウが開いている間のみです。

JavaScript ベースのクエリウィンドウを使用している場合は、新しいテーブルやデータベースをクリックして閲覧するたびに更新され、クエリを使用した後に 編集 をクリックするとフォーカスされます。クエリのテキストエリアの下にある ウィンドウ外からこのクエリを上書きしない にチェックを入れることで、クエリウィンドウの更新を抑制することができます。そうすれば、テキストエリアの内容を失うことなくバックグラウンドでテーブル/データベースを閲覧できるので、最初に参照したテーブルを含むクエリを作成す る際には特に便利です。テキストエリアの内容を変更すると、チェックボックスは自動的にチェックされます。変更したにもかかわらず、どうしてもクエリウィンドウを更新したい場合はチェックを外してください。

$cfg['QueryHistoryDB']true に設定されている場合、保存する履歴項目の数は $cfg['QueryHistoryMax'] で指定できます。

$cfg['AllowSharedBookmarks']
データ型:論理型
デフォルト値:true

バージョン 6.0.0 で追加.

Allow users to create bookmarks that are available for all other users

$cfg['BrowseMIME']
データ型:論理型
デフォルト値:true

変換機能 を有効にします。

$cfg['MaxExactCount']
データ型:整数型
デフォルト値:50000

InnoDB テーブルにおいて、どの程度の大きさのテーブルまで SELECT COUNT で正確な行数を取得するかを指定します。SHOW TABLE STATUS によって返される概算の行数が設定した値より小さい場合は SELECT COUNT が使われますが、そうでない場合はこの概算数が使われます。

バージョン 4.8.0 で変更: パフォーマンスの理由から、デフォルト値は 50000 に下げられました。

バージョン 4.2.6 で変更: デフォルト値は 500000 に変更されました。

$cfg['MaxExactCountViews']
データ型:整数型
デフォルト値:0

ビューの場合は、正確な行数を取得するとパフォーマンスに影響を与える可能性があるので、この値は SELECT COUNT ... LIMIT を使用して表示される最大値です。 0 を設定した場合は、行カウントを省略します。

$cfg['NaturalOrder']
データ型:論理型
デフォルト値:true

データベースやテーブルの名前を自然な順番でソートします (t1、t2、t10、のように)。いまのところナビゲーションパネルとデータベースビューのテーブル一覧に実装されています。

$cfg['InitialSlidersState']
データ型:文字列型
デフォルト値:'closed'

'closed' に設定した場合、ビジュアルスライダーは最初は閉じた状態になります。 'open' はその逆です。すべてのビジュアルスライダーを無効にするには、 'disabled' を使用してください。

$cfg['UserprefsDisallow']
データ型:配列型
デフォルト値:array()

Contains names of configuration options (keys in $cfg array) that users can't set through user preferences. For possible values, refer to classes under src/Config/Forms/User/.

$cfg['UserprefsDeveloperTab']
データ型:論理型
デフォルト値:false

バージョン 3.4.0 で追加.

ユーザ設定環境に phpMyAdmin 開発者向け用のオプションタブを表示させます。

ページタイトル

The page title displayed by your browser's window or tab title bar can be customized. You can use 6.27 どのような書式の文字列が使えますか?. The following four options allow customizing various parts of the phpMyAdmin interface. Note that the login page title cannot be changed.

$cfg['TitleTable']
データ型:文字列型
デフォルト値:'@HTTP_HOST@ / @VSERVER@ / @DATABASE@ / @TABLE@ | @PHPMYADMIN@'
$cfg['TitleDatabase']
データ型:文字列型
デフォルト値:'@HTTP_HOST@ / @VSERVER@ / @DATABASE@ | @PHPMYADMIN@'
$cfg['TitleServer']
データ型:文字列型
デフォルト値:'@HTTP_HOST@ / @VSERVER@ | @PHPMYADMIN@'
$cfg['TitleDefault']
データ型:文字列型
デフォルト値:'@HTTP_HOST@ | @PHPMYADMIN@'

テーマ管理設定

$cfg['ThemeManager']
データ型:論理型
デフォルト値:true

ユーザが選択可能なテーマを有効にします。 2.7 テーマの使い方と作り方 を参照してください。

$cfg['ThemeDefault']
データ型:文字列型
デフォルト値:'pmahomme'

The default theme (a subdirectory under ./public/themes/).

$cfg['ThemePerServer']
データ型:論理型
デフォルト値:false

サーバごとに別々のテーマを許可するかどうか。

$cfg['FontSize']
データ型:文字列型
デフォルト値:'82%'

バージョン 5.0.0 で非推奨: ブラウザがより効率的になったため、この設定は削除されました。したがって、このオプションは必要ありません。

使用するフォントの大きさです。 CSS に適用されます。

デフォルトクエリ

$cfg['DefaultQueryTable']
データ型:文字列型
デフォルト値:'SELECT * FROM @TABLE@ WHERE 1'
$cfg['DefaultQueryDatabase']
データ型:文字列型
デフォルト値:''

ユーザが指定しなかった時に、クエリボックスに表示されるデフォルトのクエリです。標準の 6.27 どのような書式の文字列が使えますか? を使用することができます。

MySQL 設定

$cfg['DefaultFunctions']
データ型:配列型
デフォルト値:array('FUNC_CHAR' => '', 'FUNC_DATE' => '', 'FUNC_NUMBER' => '', 'FUNC_SPATIAL' => 'GeomFromText', 'FUNC_UUID' => 'UUID', 'first_timestamp' => 'NOW')

行の挿入・変更時にデフォルトで選択されている関数で、メタタイプ (FUNC_NUMBER, FUNC_DATE, FUNC_CHAR, FUNC_SPATIAL, FUNC_UUID) と、テーブルの最初のタイムスタンプのカラムに使用される first_timestamp のための関数が定義されています。

設定例

$cfg['DefaultFunctions'] = [
    'FUNC_CHAR' => '',
    'FUNC_DATE' => '',
    'FUNC_NUMBER' => '',
    'FUNC_SPATIAL' => 'ST_GeomFromText',
    'FUNC_UUID' => 'UUID',
    'first_timestamp' => 'UTC_TIMESTAMP',
];

デフォルトの変換オプション

$cfg['DefaultTransformations']
データ型:配列型
デフォルト値:以下に示すキーと値の配列
$cfg['DefaultTransformations']['Substring']
データ型:配列型
デフォルト値:array(0, 'all', '…')
$cfg['DefaultTransformations']['Bool2Text']
データ型:配列型
デフォルト値:array('T', 'F')
$cfg['DefaultTransformations']['External']
データ型:配列型
デフォルト値:array(0, '-f /dev/null -i -wrap -q', 1, 1)
$cfg['DefaultTransformations']['PreApPend']
データ型:配列型
デフォルト値:array('', '')
$cfg['DefaultTransformations']['Hex']
データ型:配列型
デフォルト値:array('2')
$cfg['DefaultTransformations']['DateFormat']
データ型:配列型
デフォルト値:array(0, '', 'local')
$cfg['DefaultTransformations']['Inline']
データ型:配列型
デフォルト値:array('100', 100)
データ型:配列型
デフォルト値:array('', 100, 50)
データ型:配列型
デフォルト値:array('', '', '')

コンソール設定

注釈

以下の設定は主にユーザが変更するためのものです。

$cfg['Console']['StartHistory']
データ型:論理型
デフォルト値:false

開始時にクエリ履歴を表示

$cfg['Console']['AlwaysExpand']
データ型:論理型
デフォルト値:false

クエリメッセージを常に展開する

$cfg['Console']['CurrentQuery']
データ型:論理型
デフォルト値:true

現在のクエリを表示

$cfg['Console']['EnterExecutes']
データ型:論理型
デフォルト値:false

Enterでクエリを実行し、Shift + Enterで新しい行を挿入します

$cfg['Console']['DarkTheme']
データ型:論理型
デフォルト値:false

暗いテーマに切り替える

$cfg['Console']['Mode']
データ型:文字列型
デフォルト値:'info'

コンソールモード

$cfg['Console']['Height']
データ型:整数型
デフォルト値:92

コンソールの高さ

開発者向け

警告

この設定はパフォーマンスやセキュリティに重大な影響を与える可能性があります。

$cfg['environment']
データ型:文字列型
デフォルト値:'production'

動作環境を設定します。

これを変更する必要があるのは、 phpMyAdmin 自体を開発しているときのみです。development モードはいくつかの場所でデバッグ情報を表示する可能性があります。

指定可能な値は 'production' または 'development' です。

$cfg['DBG']
データ型:配列型
デフォルト値:[]
$cfg['DBG']['sql']
データ型:論理型
デフォルト値:false

コンソールの「SQL のデバッグ」タブで、クエリと実行時間の表示を有効にします。

$cfg['DBG']['sqllog']
データ型:論理型
デフォルト値:false

syslog へのクエリと実行時間のログ記録を有効にします。有効にするには、 $cfg['DBG']['sql'] を有効にする必要があります。

$cfg['DBG']['demo']
データ型:論理型
デフォルト値:false

サーバが自分自身をデモサーバとして表示できるようにします。これは、 phpMyAdmin デモサーバ に使用されます。

現在のところ、以下の動作を変更します。

  • メインページに歓迎メッセージを表示します。
  • デモサーバにと使用している Git のリビジョンについての情報をフッタに表示します。
  • 設定が存在していても、セットアップスクリプトが有効になります。
  • セットアップで MySQL サーバへの接続を試みません。
$cfg['DBG']['simple2fa']
データ型:論理型
デフォルト値:false

単純な二要素認証 を使用して二要素認証をテストする際に使用されることがあります。

設定例

phpMyAdmin の一般的な設定については、以下の設定スニペットを参照してください。

基本的な例

設定ファイルの例で、config.inc.php にコピーするといくつかの主要な設定レイアウトを得ることができます。このファイルは phpMyAdmin でと一緒に config.sample.inc.php として配布されています。なお、ここにはすべての設定オプションが含まれているわけではなく、よく使用されるものだけが含まれていることに注意してください。

<?php
/**
 * phpMyAdmin sample configuration, you can use it as base for
 * manual configuration. For easier setup you can use setup/
 *
 * All directives are explained in documentation in the doc/ folder
 * or at <https://docs.phpmyadmin.net/>.
 */

declare(strict_types=1);

/**
 * This is needed for cookie based authentication to encrypt the cookie.
 * Needs to be a 32-bytes long string of random bytes. See FAQ 2.10.
 */
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/**
 * Servers configuration
 */
$i = 0;

/**
 * First server
 */
$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.
 */

/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* Storage database and tables */
// $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';

/**
 * End of servers configuration
 */

/**
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

/**
 * Whether to display icons or text or both icons and text in table row
 * action segment. Value can be either of 'icons', 'text' or 'both'.
 * default = 'both'
 */
//$cfg['RowActionType'] = 'icons';

/**
 * Defines whether a user should be displayed a "show all (records)"
 * button in browse mode or not.
 * default = false
 */
//$cfg['ShowAll'] = true;

/**
 * Number of rows displayed when browsing a result set. If the result
 * set contains more rows, "Previous" and "Next".
 * Possible values: 25, 50, 100, 250, 500
 * default = 25
 */
//$cfg['MaxRows'] = 50;

/**
 * Disallow editing of binary fields
 * valid values are:
 *   false    allow editing
 *   'blob'   allow editing except for BLOB fields
 *   'noblob' disallow editing except for BLOB fields
 *   'all'    disallow editing
 * default = 'blob'
 */
//$cfg['ProtectBinary'] = false;

/**
 * Default language to use, if not browser-defined or user-defined
 * (you find all languages in the locale folder)
 * uncomment the desired line:
 * default = 'en'
 */
//$cfg['DefaultLang'] = 'en';
//$cfg['DefaultLang'] = 'de';

/**
 * How many columns should be used for table display of a database?
 * (a value larger than 1 results in some information being hidden)
 * default = 1
 */
//$cfg['PropertiesNumColumns'] = 2;

/**
 * Set to true if you want DB-based query history.If false, this utilizes
 * JS-routines to display query history (lost by window close)
 *
 * This requires configuration storage enabled, see above.
 * default = false
 */
//$cfg['QueryHistoryDB'] = true;

/**
 * When using DB-based query history, how many entries should be kept?
 * default = 25
 */
//$cfg['QueryHistoryMax'] = 100;

/**
 * Whether or not to query the user before sending the error report to
 * the phpMyAdmin team when a JavaScript error occurs
 *
 * Available options
 * ('ask' | 'always' | 'never')
 * default = 'ask'
 */
//$cfg['SendErrorReports'] = 'always';

/**
 * 'URLQueryEncryption' defines whether phpMyAdmin will encrypt sensitive data from the URL query string.
 * 'URLQueryEncryptionSecretKey' is a 32 bytes long secret key used to encrypt/decrypt the URL query string.
 */
//$cfg['URLQueryEncryption'] = true;
//$cfg['URLQueryEncryptionSecretKey'] = '';

/**
 * You can find more configuration options in the documentation
 * in the doc/ folder or at <https://docs.phpmyadmin.net/>.
 */

警告

コントロールユーザー 'pma' がまだ存在しない場合は使用しないでください。また、パスワードとして 'pmapass' を使用しないでください。

サインオン認証モードの例

この例は examples/signon.php を使用して サインオン認証モード の使い方のデモをします。

<?php
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type']     = 'signon';
$cfg['Servers'][$i]['SignonSession'] = 'SignonSession';
$cfg['Servers'][$i]['SignonURL']     = 'examples/signon.php';

IP アドレスを限定した自動ログインの例

phpMyAdmin にローカルでアクセスするときには自動的にログインし、リモートアクセスする際にはパスワードを要求するようにしたいのであれば、次のスニペットで実現することができます。

if ($_SERVER['REMOTE_ADDR'] === '127.0.0.1') {
    $cfg['Servers'][$i]['auth_type'] = 'config';
    $cfg['Servers'][$i]['user'] = 'root';
    $cfg['Servers'][$i]['password'] = 'yourpassword';
} else {
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
}

注釈

IP アドレスに基づくフィルタリングは、インターネット上で信頼できないので、ローカル アドレスでのみ使用してください。

複数の MySQL サーバを使用した例

$cfg['Servers'] を使用して任意の数のサーバを設定することができます。この例ではそのうち 2 つを設定しています。

<?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++; // server 1 :
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['verbose']   = 'no1';
$cfg['Servers'][$i]['host']      = 'localhost';
// more options for #1 ...

$i++; // server 2 :
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['verbose']   = 'no2';
$cfg['Servers'][$i]['host']      = 'remote.host.addr';//or ip:'10.9.8.1'
// this server must allow remote clients, e.g., host 10.9.8.%
// not only in mysql.host but also in the startup configuration
// more options for #2 ...

// end of server sections
$cfg['ServerDefault'] = 0; // to choose the server on startup

// further general options ...

SSL 経由で Google Cloud SQL を使用

Google Cloud SQL に接続するには、現在のところ証明書の検証を無効にする必要があります。これは、証明書が発行された CN がインスタンス名と一致しているにもかかわらず、 IP アドレスに接続し、 PHP がこれらの2つを比較しようとすることが原因です。証明書の検証では、次のようなエラーメッセージが表示されます。

Peer certificate CN=`api-project-851612429544:pmatest' did not match expected CN=`8.8.8.8'

警告

検証を無効にすると、トラフィックは暗号化されますが、中間者攻撃にさらされる可能性があります。

SSL を使用して phpMyAdmin を Google Cloud SQL に接続するには、クライアントとサーバの証明書をダウンロードし、 phpMyAdmin にそれらを使用するように指示してください。

// IP address of your instance
$cfg['Servers'][$i]['host'] = '8.8.8.8';
// Use SSL for connection
$cfg['Servers'][$i]['ssl'] = true;
// Client secret key
$cfg['Servers'][$i]['ssl_key'] = '../client-key.pem';
// Client certificate
$cfg['Servers'][$i]['ssl_cert'] = '../client-cert.pem';
// Server certification authority
$cfg['Servers'][$i]['ssl_ca'] = '../server-ca.pem';
// Disable SSL verification (see above note)
$cfg['Servers'][$i]['ssl_verify'] = false;

Amazon RDS Aurora with SSL

SSL を使用して phpMyAdmin を Amazon RDS Aurora の MySQL データベースインスタンスに接続するには、 CA サーバの証明書をダウンロードし、 phpMyAdmin にそれらを使用するように指示してください。

// Address of your instance
$cfg['Servers'][$i]['host'] = 'replace-me-cluster-name.cluster-replace-me-id.replace-me-region.rds.amazonaws.com';
// Use SSL for connection
$cfg['Servers'][$i]['ssl'] = true;
// You need to have the region CA file and the authority CA file (2019 edition CA for example) in the PEM bundle for it to work
$cfg['Servers'][$i]['ssl_ca'] = '../rds-combined-ca-bundle.pem';
// Enable SSL verification
$cfg['Servers'][$i]['ssl_verify'] = true;

hCaptcha を使用した reCaptcha

$cfg['CaptchaApi'] = 'https://www.hcaptcha.com/1/api.js';
$cfg['CaptchaCsp'] = 'https://hcaptcha.com https://*.hcaptcha.com';
$cfg['CaptchaRequestParam'] = 'h-captcha';
$cfg['CaptchaResponseParam'] = 'h-captcha-response';
$cfg['CaptchaSiteVerifyURL'] = 'https://hcaptcha.com/siteverify';
// This is the secret key from hCaptcha dashboard
$cfg['CaptchaLoginPrivateKey'] = '0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// This is the site key from hCaptcha dashboard
$cfg['CaptchaLoginPublicKey'] = 'xxx-xxx-xxx-xxx-xxxx';

reCaptcha using Turnstile

$cfg['CaptchaMethod'] = 'checkbox';
$cfg['CaptchaApi'] = 'https://challenges.cloudflare.com/turnstile/v0/api.js';
$cfg['CaptchaCsp'] = 'https://challenges.cloudflare.com https://static.cloudflareinsights.com';
$cfg['CaptchaRequestParam'] = 'cf-turnstile';
$cfg['CaptchaResponseParam'] = 'cf-turnstile-response';
$cfg['CaptchaLoginPublicKey'] = '0xxxxxxxxxxxxxxxxxxxxxx';
$cfg['CaptchaLoginPrivateKey'] = '0x4AAAAAAAA_xx_xxxxxxxxxxxxxxxxxxxx';
$cfg['CaptchaSiteVerifyURL'] = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';

reCaptcha using Google reCaptcha v2/v3

$cfg['CaptchaLoginPublicKey'] = 'xxxxxxxxxxxxxxxx-xxxxxxxxxxxx';
$cfg['CaptchaLoginPrivateKey'] = 'xxxxxxxxx-xxxxxxxxxxxxxx';
// Remove it if you dot not want the checkbox mode
$cfg['CaptchaMethod'] = 'checkbox';

ユーザーガイド

phpMyAdmin の設定

インタフェースのカスタマイズに使用できる設定がたくさんあります。これらの設定は 設定 に書かれています。設定にはいくつかの階層があります。

グローバル設定は 設定 にあるように config.inc.php で設定します。これはデータベースへの接続やその他のシステム全体の設定を行うための唯一の方法です。

これに加えて、ユーザ毎の設定があり、それを phpMyAdmin 環境保管領域 に永続的に保存され、 ゼロ設定 で自動的に構成されます。 phpMyAdmin 環境保管領域 が設定されていない場合、設定は一時的にセッションデータに保存されます。

また、ユーザ設定をファイルとしてダウンロードしたり、ブラウザのローカルストレージに保存しておいたりすることもできます。これらのオプションは 設定 タブにあります。ブラウザのローカルストレージに保存された設定は、 phpMyAdmin へのログイン時に自動的に読み取られます。

二要素認証

バージョン 4.8.0 で追加.

phpMyAdmin 4.8.0 以降では、ログイン時に二要素認証を使用するよう設定することができます。使用するには、まず phpMyAdmin 環境保管領域 を設定する必要があります。そうすると、すべてのユーザーが 設定 で 2 番目の認証要素を使用するよう選択することができるようになります。

Git のソースリポジトリから phpMyAdmin を実行している場合は、依存関係を手動でインストールする必要があります。通常は次のようなコマンドで行います。

composer require pragmarx/google2fa-qrcode bacon/bacon-qr-code

または、 FIDO U2F でハードウェアのセキュリティキーを使用する場合は次のようになります。

composer require code-lts/u2f-php-server

認証アプリ (2FA)

認証のためにアプリケーションを使用するのは、 HOTP と TOTP に基づいた非常に一般的なアプローチです。これは、 phpMyAdmin から認証アプリケーションに秘密鍵を送信することに基づいており、アプリケーションは、その後、このキーに基づいてワンタイムコードを生成することができます。 phpMyAdmin からアプリケーションにキーを入力する最も簡単な方法は、 QR コードをスキャンすることです。

これらの標準を実装するために携帯電話で利用できるアプリケーションは多数ありますが、最も広く利用されているのは以下のようなものです。

ハードウェアセキュリティキー (FIDO U2F)

ハードウェアトークンを使用することは、ソフトウェアベースの方法よりも安全と考えられています。 phpMyAdmin は FIDO U2F トークンに対応しています。

このトークンには様々な製造元があります。例を示します。

単純な二要素認証

この認証は、テストとデモンストレーションだけのために提供しているものであり、実際には二要素認証を提供せず、ボタンをクリックしてログインの確認をユーザに求めるだけです。

本番では使用するべきではなく、 $cfg['DBG']['simple2fa'] を設定しない限り無効にしてください。

変換機能

注釈

変換機能を使用するには、 phpMyAdmin 環境保管領域 を設定する必要があります。

はじめに

変換機能を有効にするには、 column_info テーブルと、適切な設定項目を設定する必要があります。手順については 設定 をご覧ください。

phpMyAdmin には2種類の変換があります。ブラウザ表示変換は、 phpMyAdmin で閲覧した際にデータがどのように表示されるかにのみ影響を与えるもので、入力変換は phpMyAdmin で挿入される前の値に影響を与えるものです。各カラムの内容には異なる変換を適用することができます。それぞれの変換には、保存されたデータにどのように影響を与えるかを定義するオプションがあります。

例えば、ファイル名を入れる filename というカラムがあるとします。ふつう phpMyAdmin ではファイル名しか表示されませんが、表示変換機能を使うと、このファイル名を HTML リンクに変換できます。 phpMyAdmin の構造の中でそのカラムのリンクをクリックすると、新しいブラウザウインドウにそのファイルが表示されます。変換オプションを使えば、その文字列の前後に付け加える文字列や、出力を保存する形式も指定できます。

利用可能なすべての変換とそのオプションの一般的な概要については、既存のカラムの 変更 リンクをクリックするか、新しいカラムを作成するためのダイアログを開いてください。どちらの場合もカラム構造のページには「ブラウザ表示変換」と「入力変換」のリンクがあり、お使いのシステムで利用可能な各変換についての詳細な情報が表示されます。

変換機能の効果的な使い方のチュートリアルについては、phpMyAdmin の公式ホームページの Link の節 をご覧ください。

使い方

テーブルの構造ページに移動してください (テーブルの [構造] リンクをクリックするとたどり着きます)。 [変更] (または変更アイコン) をクリックすると、項目の最後の方に変換に関する新しいフィールドが5つ表示されます。それぞれ「 メディア型 」、「ブラウザ表示変換」、「変換オプション」と呼ばれています。

  • メディア型 」の項目はドロップダウンになっています。カラムの内容に対応した メディア型 を選択してください。なお、多くの変換機能は メディア型 を選択しないと有効にならないので注意してください。
  • [ブラウザ表示変換] はドロップダウンフィールドです。定義済みの変換を、数が増えていることを期待しつつ選択することができます。独自の変換を作成する方法については、以下を参照してください。変換機能にはグローバルなものと、 MIME タイプに結びつけられたものとがあります。グローバルな変換機能はどの MIME タイプでも利用できます。必要に応じて、 MIME タイプが考慮されます。 MIME タイプに結びつけられた変換機能は、ふつう特定の MIME タイプのみ ('image' など) を操作します。 MIME の主タイプを操作するものはたいていサブタイプを考慮に入れますが、特定のサブタイプ ('image/jpeg' など) のみを操作するものもあります。関数が定義されていない MIME タイプでも変換を使用することができます。正しい変換を選択したかどうかのセキュリティチェックはありませんので、出力がどのようになるかは注意してください。
  • [ブラウザ表示変換オプション] フィールドは、自由入力のテキストフィールドです。ここには変換機能固有のオプションを入力する必要があります。通常、変換はデフォルトのオプションで動作しますが、一般的には概要を見てどのオプションが必要なのかを確認すると良いでしょう。 ENUM/SET フィールドと同様に、複数のオプションは 'a','b','c',... (空白がないことに注意) という形式で分割しなければなりません。これは、内部的にはオプションが配列として解析され、最初の値が配列の最初の要素になるためです。 MIME の文字セットを指定したい場合は、 transformation_options で定義することができます。これは、特定の MIME 変換の事前に定義されたオプションの外側に、セットの最後の値として置かなければなりません。 "'; charset=XXX'" という形式を使用してください。2つのオプションを指定できる変換を使用していて、文字セットを追加したい場合は、 "'最初のパラメータ','次のパラメータ','charset=us-ascii'" のように入力してください。ただし、 "'','','charset =us-ascii'" のようにパラメータはデフォルトのままでも構いません。デフォルトのオプションは $cfg['DefaultTransformations'] で設定できます。
  • 「入力変換」は、上記の「ブラウザ表示変換」の操作に厳密に対応する別のドロップダウンメニューですが、データベースに挿入する前のデータに影響を与えます。これらは、特殊なエディタ (例えば、 phpMyAdmin SQL エディタインターフェイスの使用) やセレクタ (画像をアップロードするためなど) を提供するために最も一般的に使用されます。 IPv4 アドレスをバイナリに変換したり、正規表現を使ってデータを解析するなどの操作も可能です。
  • 最後に、「入力変換オプション」は、上記の「ブラウザ表示変換オプション」のセクションに相当し、オプションと必須のパラメータを入力する場所です。

ファイル構造

All specific transformations for mimetypes are defined through class files in the directory src/Plugins/Transformations/. Each of them extends a certain transformation abstract class declared in src/Plugins/Transformations/Abs.

これらはカスタマイズを容易にし、新規または独自の変換を簡単に追加できるようにするために、ファイルに保存します。

ユーザが独自の MIME タイプを入力することはできませんが、そのために変換機能はいつでも確実に動作することができます。ある変換機能に未知の MIME タイプを適用しようとしても、変換関数は処理の方法を知らないので意味がありません。

There is a file called src/Plugins/Transformations.php that provides some basic functions which can be included by any other transform function.

ファイル名の規則は [Mimetype]_[Subtype]_[Transformation Name].php ですが、それが拡張する抽象クラスの名前は [Transformation Name]TransformationsPlugin です。変換プラグインで実装する必要のあるすべてのメソッドは次のとおりです。

  1. メインクラスの getMIMEType() および getMIMESubtype();
  2. 継承した抽象クラスの getName(), getInfo(), applyTransformation()。

getMIMEType(), getMIMESubtype(), getName() の各メソッドはそれぞれ MIME タイプ、 MIME サブタイプ、変換の名前を返します。 getInfo() は変換の説明と受け取る可能性があるオプションを返し、 applyTransformation() は変換プラグインの実際の作業を行うメソッドです。

Please see the src/Plugins/Transformations/TEMPLATE and src/Plugins/Transformations/TEMPLATE_ABSTRACT files for adding your own transformation plug-in. You can also generate a new transformation plug-in (with or without the abstract transformation class), by using scripts/transformations_generator_plugin.sh or scripts/transformations_generator_main_class.sh.

applyTransformation() メソッドには常に 3 つの変数が渡されます。

  1. $buffer - カラム内のテキストが入ります。これが変換するテキストになります。
  2. $options - ユーザから変換関数に渡されたオプションが配列として入ります。
  3. $meta - カラムについての情報を持つオブジェクトが入ります。データは mysql_fetch_field() 関数の出力から抽出されます。そのため、この関数の マニュアルページ で説明されているオブジェクトのプロパティすべてが利用できますし、 unsigned/zerofill/not_null/... といったプロパティによってカラムを変換することもできます。変数 $meta->mimetype には、カラムの元の メディア型 が入ります。 (すなわち 'text/plain', 'image/jpeg' など)

ブックマーク

注釈

ブックマーク機能を使用するには、 phpMyAdmin 環境保管領域 を設定する必要があります。

ブックマークの保存

実行されたクエリはすべて、結果が表示されるページでブックマークすることができます。ページの最後に、 この SQL をブックマーク というラベルの付いたボタンがあります。ブックマークを保存するとすぐに、そのクエリはデータベースにリンクされます。これで、そのデータベースのクエリボックスが表示される各ページのブックマークドロップダウンが利用できるようになります。

ブックマーク内の変数

クエリ内で、変数のプレースホルダを追加することもできます。これは、クエリの中に /**/ で挟んだ SQL コメントを挿入することで行います。コメント内では、 [VARIABLE{変数番号}] の形の特別な文字列を使用します。 SQL コメントを除いたクエリ全体がそれ自体で有効でなければならないことに注意してください。そうでないと、ブックマークとして保存できません。また、 'VARIABLE' のテキストは、大文字と小文字が区別されることに注意してください。

ブックマークを実行するとき、クエリ ボックスページの 変数 入力ボックスに入力されたすべてが、格納されているクエリの文字列 /*[VARIABLE{変数番号}]/ に置き換えられます。

また、 /*[VARIABLE{variable-number}]*/ 以外の文字列はすべてそのままクエリに残ることを忘れないようにしてください。ただし、 /**/ は削除されます。ですから、次のような使い方もできます。

/*, [VARIABLE1] AS myname */

これは、次のように展開されます。

, VARIABLE1 as myname

クエリ内で、 VARIABLE1 は入力ボックス「変数 1」に入力した文字列になります。

もっと複雑な例です。例えば次のようなクエリを保存したとします。

SELECT Name, Address FROM addresses WHERE 1 /* AND Name LIKE '%[VARIABLE1]%' */

ここで、例えば保存されたクエリ用の変数として "phpMyAdmin" と入力すると、最終的なクエリは次のようになります。

SELECT Name, Address FROM addresses WHERE 1 AND Name LIKE '%phpMyAdmin%'

/**/ の構文の中に 空白が含まれていないことにご注意ください 。ここに挿入された空白は、クエリの中でも後から空白として挿入されますので、予期せぬ結果を生むことがあります。特に "LIKE ''" 式で変数展開する場合はそうです。

ユーザ管理

ユーザ管理は、どのユーザが MySQL サーバへの接続を許可されているか、各データベースにどのような権限を持っているかを制御する手続きです。 phpMyAdmin は、ユーザ管理を処理するのではなく、ユーザ名とパスワードを MySQL に渡し、そのユーザが特定のアクションを実行することを許可されているかどうかを判断します。 phpMyAdmin 内では、管理者はユーザの作成、既存ユーザの権限の表示と編集、ユーザの削除を完全に制御することができます。

phpMyAdmin 内では、ユーザ管理はメインページの ユーザアカウント タブから制御することができます。ユーザを作成、編集、削除することができます。

新しいユーザの作成

新しいユーザを作成するには、 ユーザアカウント ページの下部にある ユーザアカウントを追加する リンクをクリックします ("root " ユーザなどの 「スーパーユーザ」である必要があります)。テキストボックスとドロップダウンを使用して、特定のニーズに合わせてユーザを設定します。次に、そのユーザのためにデータベースを作成し、特定のグローバル権限を付与するかどうかを選択できます。 ([実行] をクリックして) ユーザを作成したら、特定のデータベースに対するそのユーザの権限を定義することができます (この場合、グローバル権限は付与しないでください)。一般的に、ユーザに必要なのはグローバル権限 (USAGE 以外) ではなく、特定のデータベースに対する権限のみです。

既存のユーザの編集

既存のユーザを編集するには、 ユーザアカウント ページでそのユーザの右側にある鉛筆アイコンをクリックしてください。その後、グローバルおよびデータベース固有の権限を編集したり、パスワードを変更したり、それらの権限を新しいユーザにコピーしたりすることもできます。

ユーザの削除

ユーザアカウント ページで、削除するユーザーのチェックボックスをオンにし、 (存在する場合は) 同名のデータベースを削除するかどうかを選択し、 [実行] をクリックしてください。

特定のデータベースでユーザに権限を割り当てる

ユーザは、 (ホームページの ユーザアカウント リンクから) ユーザレコードを編集することでデータベースに割り当てられます。特定のテーブルに固有のユーザを作成する場合は、最初にそのユーザを (グローバル権限なしで) 作成した後で、戻ってそのユーザを編集してテーブルと個々のテーブルの権限を追加する必要があります。

設定可能なメニューとユーザグループ

$cfg['Servers'][$i]['users']$cfg['Servers'][$i]['usergroups'] を有効にすることで、ユーザが phpMyAdmin ナビゲーションで何を見ることができるかをカスタマイズすることができます。

警告

この機能は、ユーザから見えるものを制限するだけであり、すべての機能を使用することができます。そのため、これはセキュリティ上の制限とは考えてはいけません。ユーザができることを制限したい場合は、 MySQL の権限を設定してください。

この機能を有効にすると、 ユーザアカウント 管理インタフェースには、ユーザグループを管理するための2つ目のタブが追加され、各グループが表示することができるものを定義することができ (下の画像を参照)、それぞれのユーザをこれらのグループのうちの一つに割り当てることができます。ユーザには簡略化されたユーザインタフェースが表示されるので、 phpMyAdmin が提供するすべての機能に圧倒されてしまうかもしれない経験の浅いユーザにとっては有用かもしれません。

_images/usergroups.png

リレーション

phpMyAdmin では、MySQL ネイティブ (InnoDB) のメソッドを使用してリレーションシップ (外部キーのようなもの) を作成することができ、必要に応じて phpMyAdmin 専用の機能を使用することができます。リレーションシップを編集するには、 リレーションビュー とドラッグ&ドロップを行う デザイナー の2つの方法があります。

注釈

phpMyAdmin のリレーションのみを使用するには、 phpMyAdmin 環境保管領域 を設定しておく必要があります。

技術情報

今のところ、ネイティブでリレーションシップに対応している MySQL テーブル種別は InnoDB だけです。 InnoDB テーブルを使用する場合、 phpMyAdmin は実際の InnoDB リレーションを作成し、どのアプリケーションがデータベースにアクセスしても MySQL による強制が働きます。他のテーブル種別の場合、 phpMyAdmin は内部的にリレーションを強制しますが、他のアプリケーションには適用されません。

リレーションビュー

動作させるためには、まず [[pmadb|pmadb]] を適切に作成する必要があります。それが設定できたら、テーブルの [構造] ページを選択します。テーブルの定義の下には、 [リレーションビュー ] というリンクが表示されています。そのリンクをクリックすると、任意の (ほとんどの) フィールドに対して別のテーブルへのリンクを作成するためのページが表示されます。そこには主キーのみが表示されますので、参照しているフィールドが表示されていない場合は、おそらく何かうまくいっていません。下部のドロップダウンはレコードの名前として使用されるフィールドです。

リレーションビューの例
_images/pma-relations-relation-view-link.png _images/pma-relations-relation-link.png

例えば、カテゴリとリンクがあり、1つのカテゴリに複数のリンクが含まれているとします。テーブル構造は次のようになります。

  • category.category_id (ユニークである必要がある)
  • category.name
  • link.link_id
  • link.category_id
  • link.uri.

link テーブルのリレーションビュー (テーブル構造の下) ページを開き、 category_id フィールドには、マスタレコードとして category.category_id を選択します。

今、リンクテーブルを参照すると、 category_id フィールドは、適切なカテゴリレコードへのクリック可能なハイパーリンクになります。しかし、表示されるのはカテゴリの名前ではなく、 category_id だけです。

_images/pma-relations-relation-name.png

これを修正するには、 category テーブルのリレーションビューを開き、下部のドロップダウンで「名前」を選択します。今、再びリンクテーブルを参照して、 category_id のハイパーリンクにマウスを合わせると、関連するカテゴリの値がツールチップとして表示されます。

_images/pma-relations-links.png

デザイナ

デザイナ機能は、 phpMyAdmin のリレーションをグラフィカルに作成、編集、表示する方法です。これらのリレーションは、 phpMyAdmin のリレーションビューで作成されたものと互換性があります。

この機能を使用するには、 phpMyAdmin 環境保管領域 を適切に設定し、 $cfg['Servers'][$i]['table_coords'] を設定する必要があります。

デザイナを使用するには、データベースの構造ページを選択し、 デザイナ タブを探してください。

ビューを PDF にエクスポートするには、最初に PDF ページを作成する必要があります。デザイナは、テーブルがどのように表示されるか、レイアウトを作成します。最終的にビューをエクスポートするには、 PDF ページでこれを作成し、デザイナで作成したレイアウトを選択する必要があります。

グラフ機能

バージョン 3.4.0 で追加.

phpMyAdmin のバージョン 3.4.0 から、 [クエリ結果操作] エリアの [グラフで表示する] リンクをクリックすることで、 SQL クエリから簡単にグラフを生成することができます。

_images/query_result_operations.png

ウィンドウレイヤー [グラフで表示する] が表示され、以下のオプションでグラフをカスタマイズすることができます。

  • グラフの種類: グラフの種類を選択できます。対応している種類は、横棒グラフ、縦棒グラフ、折れ線グラフ、曲線グラフ、面グラフ、円グラフ、タイムラインです (現在選択されている系列に適用可能なグラフの種類のみが提供されます)。
  • X 軸: 主軸のフィールドを選択することができます。
  • 系列: グラフ化する系列を選択することができます。複数の系列を選択することができます。
  • タイトル: グラフの上に表示されるグラフのタイトルを指定することができます。
  • X 軸と Y 軸のラベル: 軸のラベルを指定することができます。
  • 開始行および行数: 結果セット内の指定した行数のみのグラフを生成することができます。
_images/chart.png

グラフの実装

phpMyAdmin のグラフは jQuery の jqPlot ライブラリを使用して描画しています。

設定例

円グラフ

円グラフのための単純な結果を生成できるクエリです。

SELECT 'Food' AS 'expense',
   1250 AS 'amount' UNION
SELECT 'Accommodation', 500 UNION
SELECT 'Travel', 720 UNION
SELECT 'Misc', 220

また、このクエリの結果は次の通りです。

expense amount
Food 1250
Accommodation 500
Travel 720
Misc 220

expense を X 軸および系列の値として選択します。

_images/pie_chart.png
横棒グラフと縦棒グラフ

横棒グラフと縦棒グラフはどちらも積み上げに対応しています。どちらかの種類を選択すると、積み上げ形式を選択するチェックボックスが表示されます。

横棒グラフや縦棒グラフのための単純な結果を生成できるクエリです。

SELECT
   'ACADEMY DINOSAUR' AS 'title',
   0.99 AS 'rental_rate',
   20.99 AS 'replacement_cost' UNION
SELECT 'ACE GOLDFINGER', 4.99, 12.99 UNION
SELECT 'ADAPTATION HOLES', 2.99, 18.99 UNION
SELECT 'AFFAIR PREJUDICE', 2.99, 26.99 UNION
SELECT 'AFRICAN EGG', 2.99, 22.99

また、このクエリの結果は次の通りです。

title rental_rate replacement_cost
ACADEMY DINOSAUR 0.99 20.99
ACE GOLDFINGER 4.99 12.99
ADAPTATION HOLES 2.99 18.99
AFFAIR PREJUDICE 2.99 26.99
AFRICAN EGG 2.99 22.99

X 軸として title を、系列として rental_rate と replacement_cost を選択すると次のようになります。

_images/column_chart.png
散布図

散布図は、1つまたは複数の変数の動きを別な変数と比較して識別するのに便利です。

縦棒グラフと横棒グラフの節と同じデータセットを使用して、 X 軸として replacement_cost を、系列として rent_rate を選択します。

_images/scatter_chart.png
折れ線、曲線、タイムライングラフ

これらのグラフは、基礎となるデータのトレンドを表すために使用することができます。曲線グラフは滑らかな線を描き、タイムライングラフは日付と時間の間の距離を考慮して X 軸を描きます。

単純な線、曲線、タイムライングラフを生成できるクエリです。

SELECT
   DATE('2006-01-08') AS 'date',
   2056 AS 'revenue',
   1378 AS 'cost' UNION
SELECT DATE('2006-01-09'), 1898, 2301 UNION
SELECT DATE('2006-01-15'), 1560, 600 UNION
SELECT DATE('2006-01-17'), 3457, 1565

また、このクエリの結果は次の通りです。

date revenue cost
2016-01-08 2056 1378
2006-01-09 1898 2301
2006-01-15 1560 600
2006-01-17 3457 1565
_images/line_chart.png _images/spline_chart.png _images/timeline_chart.png

インポートとエクスポート

インポート

データをインポートするには、 phpMyAdmin の [インポート] タブを開いてください。特定のデータベースやテーブルにデータをインポートするには、データベースまたはテーブルを開いてから [インポート] タブを開いてください。

標準の [インポート] および [エクスポート] タブのほかに、ブラウザの phpMyAdmin インタフェースにファイルマネージャから SQL ファイルを直接ドラッグ&ドロップすることもできます。

大きなファイルのインポートで問題が発生した場合は、「 1.16 (メモリ、HTTP、タイムアウトのせいで) 大きなダンプファイルをアップロードできません。」を参照してください。

以下の方法でインポートを行うことができます。

フォームベースのアップロード

対応している任意のファイル形式を、 (b|g)zip ファイル (例えば mydump.sql.gz) を含め使用することができます。

フォームベースの SQL クエリ

有効な SQL ダンプが利用できます。

アップロードディレクトリの使用

phpMyAdmin がインストールされているウェブサーバ上のアップロードディレクトリを指定することができます。このディレクトリにファイルをアップロードした後、 phpMyAdmin のインポートダイアログでこのファイルを選択することができます、 $cfg['UploadDir'] を参照してください。

phpMyAdmin はよく使われる様々なファイル形式からインポートすることができます。

CSV

カンマ区切りファイル形式は、スプレッドシートやその他の様々なプログラムで、エクスポートやインポートによく使用されます。

注釈

CSV ファイルから 'auto_increment' フィールドを持つテーブルにデータをインポートするとき、CSV フィールド内のそれぞれのレコードで 'auto_increment' 値を '0' (ゼロ) に設定してください。これによって 'auto_increment' フィールドが正しく生成されるようになります。

サーバやデータベースレベルで CSV ファイルをインポートできるようになりました。 CSV ファイルをインポートするためのテーブルを作成しなくても、最適な構造が決定され、データがインポートされます。その他の機能、要件、制限事項は従来通りです。

LOAD DATA 文を使用した CSV の読み込み

CSV と同様、内蔵の MySQL パーサのみを使用し、 phpMyAdmin のものは使用しません。

ESRI シェープファイル

ESRI シェイプファイルまたは単にシェイプファイルは、地理情報システム (GIS) ソフトウェアのための一般的な地理空間ベクトルデータフォーマットです。 Esri と他のソフトウェア製品間のデータ相互運用のための (ほぼ) オープンな仕様として、 Esri が開発・規定しています。

MediaWiki

phpMyAdmin (バージョン 4.0 以降) でエクスポートできる MediaWiki ファイルもインポートできるようになりました。これは Wikipedia が表を表示するために使用しているファイル形式です。

Open Document スプレッドシート (ODS)

1 つ以上のスプレッドシートを含む OpenDocument ワークブックが直接インポートできるようになりました。

ODS スプレッドシートをインポートするときは、インポートをできるだけ簡単にするために、スプレッドシートに特定の名前を付ける必要があります。

テーブル名

インポート中、 phpMyAdmin はシート名をテーブル名として使用します。スプレッドシートプログラムでシート名を既存のテーブル名 (または作成したいテーブル名) と一致するように、変更する必要があります (ただし、操作タブから新しいテーブル名をすぐに変更できるので、これはあまり気にしなくてもよいでしょう)。

カラム名

また、スプレッドシートの最初の行には、列の名前が記載されたヘッダーを作成する必要があります (これは、スプレッドシートの最上部に新しい行を挿入することで実現できます)。インポート画面で、「ファイルの最初の行にテーブルのカラム名が含まれている」のチェックボックスを選択してください。

注釈

数式や計算は評価されず、直近で保存された値が読み込まれます。インポートする前にスプレッドシートのすべての値があることを確認してください。

SQL

SQL を使用してデータに対して任意の操作を行うことができ、またバックアップしたデータを復元する場合にも役立ちます。

XML

phpMyAdmin (バージョ ン3.3.0 以降)によってエクスポートされた XML ファイルがインポートできるようになりました。構造 (データベース、テーブル、ビュー、トリガーなど) やデータは、ファイルの内容に応じて作成されます。

対応している XML スキーマはこの Wiki では文書化されていません。

エクスポート

phpMyAdminは、ローカルディスク (またはウェブサーバの特別な $cfg['SaveDir'] フォルダ) 上のテキストファイル (圧縮されている場合でも) に、一般的に使用されるさまざまな形式でエクスポートできます。

CodeGen

NHibernate ファイル形式です。計画されているバージョンは Java、Hibernate、 PHP PDO、 JSON などです。したがって、仮の名前は codegen です。

CSV

カンマ区切りファイル形式は、スプレッドシートやその他の様々なプログラムで、エクスポートやインポートによく使用されます。

MS Excel 用 CSV

これは多くの Microsoft Excel の英語版のほとんどにインポートできる CSV エクスポートが事前構成されただけのものです。一部のローカライズ版 (デンマーク語など) はフィールド区切りに "," ではなく ";" が必要です。

Microsoft Word 2000

Microsoft Word 2000 以降 (または OpenOffice.org などの互換製品) を使用している場合は、このエクスポートが利用できます。

JSON

JSON (JavaScript Object Notation) は、軽量のデータ交換形式です。人間にとって読み書きしやすく、機械にとって解釈や生成がしやすいものです。

バージョン 4.7.0 で変更: 生成される JSON の構造は、 phpMyAdmin 4.7.0 で妥当な JSON データを出力するために変更されました。

生成される JSON は、以下の属性を持ったオブジェクトのリストです。

type

このオブジェクトの型で、次のうちのいずれか1つです。

header
コメントと phpMyAdmin のバージョンを含むエクスポートヘッダです。
database
データベースマーカの開始で、データベースの名前を含みます。
table
エクスポートするテーブルのデータです。
version

header type で使用され、 phpMyAdmin のバージョンを示します。

comment

オプションのテキストによるコメントです。

name

オブジェクト名です。 type によってテーブル名またはデータベース名になります。

database

table type の場合のデータベース名です。

data

table type の場合のテーブルの内容です。

出力例:

[
    {
        "comment": "Export to JSON plugin for PHPMyAdmin",
        "type": "header",
        "version": "4.7.0-dev"
    },
    {
        "name": "cars",
        "type": "database"
    },
    {
        "data": [
            {
                "car_id": "1",
                "description": "Green Chrysler 300",
                "make_id": "5",
                "mileage": "113688",
                "price": "13545.00",
                "transmission": "automatic",
                "yearmade": "2007"
            }
        ],
        "database": "cars",
        "name": "cars",
        "type": "table"
    },
    {
        "data": [
            {
                "make": "Chrysler",
                "make_id": "5"
            }
        ],
        "database": "cars",
        "name": "makes",
        "type": "table"
    }
]
LaTeX

テーブルのデータや構造を LaTeX に埋め込みたいのであれば、これが正しい選択です。

LaTeX は高品質の科学および数学の文書を生成するのに最適な組版システムです。これは単一の文字から完全な本まで、他の種類の文書を生成するのにも適しています。 LaTeX は整形エンジンに TeX を使用しています。 TeX および LaTeX についての詳細は the Comprehensive TeX Archive Network および short description od TeX を参照してください。

出力をレンダリングする前に、出力を LaTeX ドキュメントに埋め込む必要があります。以下にドキュメントの例を挙げます。

\documentclass{article}
\title{phpMyAdmin SQL output}
\author{}
\usepackage{longtable,lscape}
\date{}
\setlength{\parindent}{0pt}
\usepackage[left=2cm,top=2cm,right=2cm,nohead,nofoot]{geometry}
\pdfpagewidth 210mm
\pdfpageheight 297mm
\begin{document}
\maketitle

% insert phpMyAdmin LaTeX Dump here

\end{document}
MediaWiki

テーブルとデータベースの両方を、ウィキペディアが表を表示するために使用する MediaWiki 形式でエクスポートすることができます。エクスポートできるものは構造、データ、テーブル名、ヘッダなどです。

OpenDocument スプレッドシート

広く採用されているスプレッドシートデータのオープン標準です。 LibreOffice、 OpenOffice、 Microsoft Office、 Google Docs などの最近の多くのスプレッドシートプログラムは、この形式を処理することができます。

OpenDocument テキスト

広く採用されているテキストデータの新しい標準です。最新のワードプロセッサ (LibreOffice、 OpenOffice、 Microsoft Word、 AbiWord、 KWordなど) でこれを処理することができます。

PDF

プレゼンテーション目的の場合、編集できない PDF は最適かもしれません。

PHP array

選択されたテーブルやデータベースの内容を持った多次元配列を宣言する PHP ファイルを生成することができます。

SQL

SQL でエクスポートすると、データベースの復元に使用できるため、バックアップに有用です。

「作成されたクエリの最大長」オプションは文書化されていないようです。しかし、実験では、大きく広がった INSERT を分割するため、それぞれが指定されたバイト数 (または文字数?) より大きくならないことが分かっています。したがって、ファイルをインポートするときに、大きなテーブルで "Got a packet bigger than 'max_allowed_packet' bytes" というエラーを回避することができます。

データオプション

完全挿入 は、 SQL ダンプにカラム名を追加します。このパラメータにより、ダンプの可読性と信頼性が高まります。カラム名を追加すると、ダンプの大きさが増加しますが、拡張挿入と組み合わせると無視できる程度です。

拡張挿入 は、複数のデータ行を1つの INSERT クエリに結合します。これにより、大きな SQL ダンプではファイルの大きさを大幅に縮小でき、インポート時の INSERT の速度を上げることができるので、通常は推奨されます。

Texy!

Texy! マークアップ形式です。例を Texy! のデモ で参照することができます。

XML

カスタムスクリプトで使用するために解析しやすいエクスポートです。

バージョン 3.3.0 で変更: 使用する XML スキーマがバージョン 3.3.0 で変更されました

YAML

YAML は、人間が読める形式であり、計算能力も高いデータシリアル化形式です (<https://yaml.org>)。

カスタムテーマ

phpMyAdmin には、サードパーティのテーマに対応しています。追加のテーマは、私たちのウェブサイト <https://www.phpmyadmin.net/themes/> からダウンロードできます。

設定

Themes are configured with $cfg['ThemeManager'] and $cfg['ThemeDefault']. Under ./public/themes/, you should not delete the directory pmahomme or its underlying structure, because this is the system theme used by phpMyAdmin. pmahomme contains all images and styles, for backwards compatibility and for all themes that would not include images or css-files. If $cfg['ThemeManager'] is enabled, you can select your favorite theme on the main page. Your selected theme will be stored in a cookie.

カスタムテーマの作成

テーマを作成するには、以下のようにします。

  • make a new subdirectory (for example "your_theme_name") under ./public/themes/.
  • pmahomme から "your_theme_name" にファイルやディレクトリをコピーします
  • "your_theme_name/css" の CSS ファイルを編集します
  • "your_theme_name/img" に新しい画像を入れます
  • "your_theme_name/scss" の _variables.scss を編集します
  • "your_theme_name" の theme.json を編集してテーマのメタデータを設定します (下記参照)
  • テーマの新しいスクリーンショットを作成して、 "your_theme_name/screen.png" に保存します
テーマのメタデータ

バージョン 4.8.0 で変更: 4.8.0 以前は、テーマのメタデータは info.inc.php ファイルで渡されていました。これをは theme.json に置き換えられ、より簡単に解析ができるようになり (PHP コードを扱う必要がなくなり)、追加機能に対応するようになりました。

テーマディレクトリには、テーマのメタデータを含むファイル theme.json があります。現在のところ、以下の要素があります。

name

テーマの表示名です。

このフィールドは必須です。

version

テーマのバージョンです。自由に設定することができ、 phpMyAdmin のバージョンと一致させる必要はありません。

このフィールドは必須です。

description

テーマの説明です。これはウェブサイトに表示されます。

このフィールドは必須です。

author

テーマの作者の名前です。

このフィールドは必須です。

url

作者のウェブサイトへのリンクです。そこでサポートを受けられるようにするといいでしょう。

supports

対応している phpMyAdmin のメジャーバージョンの配列です。

このフィールドは必須です。

たとえば、phpMyAdmin 4.8 に付属しているオリジナルテーマの定義は次の通りです。

{
    "name": "Original",
    "version": "4.8",
    "description": "Original phpMyAdmin theme",
    "author": "phpMyAdmin developers",
    "url": "https://www.phpmyadmin.net/",
    "supports": ["4.8"]
}
画像の共有

独自の記号やボタンを使用しない場合は、 "your_theme_name" から "img" ディレクトリを削除してください。デフォルトの (システムテーマである pmahomme の) アイコンやボタンが使われます。

その他の情報源

出版本

phpMyAdmin を使用するための決定的なガイドは、 Marc Delisle 著『Mastering phpMyAdmin for Effective MySQL Management』です。この本やその他の公式参考書についての情報は「books at the phpMyAdmin site」で見ることができます。

チュートリアル

興味を持つかもしれない外部のチュートリアルや記事です。

FAQ - よくある質問

phpMyAdmin の機能やインタフェースの詳細については phpMyAdmin の公式ページにある Link セクション をご覧ください。

サーバ

1.1 サーバが度々クラッシュします。その度に、特定のアクションを要求されたり、ブラウザに空白のページや暗号のような文字だらけのページが表示されます。どうしたらよいのでしょうか?

config.inc.php ファイルの $cfg['OBGzip'] ディレクティブを false に、PHP の設定ファイルの zlib.output_compression 設定を Off にしてみてください。

1.2 phpMyAdmin を使うと Apache サーバがクラッシュします。

まず、 Apache (および MySQL) の最新のバージョンを使用してみてください。それでもサーバがクラッシュするようなら、Apache の各種サポートグループに助けを求めてください。

1.3 (取り下げ)。

1.4 phpMyAdmin を IIS 上で使うと、 "The specified CGI application misbehaved by not returning a complete set of HTTP headers ..." というエラーメッセージが表示されます。

PHP の配布ファイルに入っている install.txt を読み忘れたのでしょう。 PHP の公式バグデータベースから PHP バグレポート #12061 を見てみてください。

1.5 phpMyAdmin を IIS 上で使うと、 HTTP においてクラッシュしたり、エラーメッセージがたくさん表示されます。

これは PHP の ISAPI フィルタの既知の問題です。あまり安定していません。代わりにクッキー認証モードをお使いください。

1.6 PWS 上で phpMyAdmin が使えません。何も表示されません!

This seems to be a PWS bug. Filippo Simoncini found a workaround (at this time there is no better fix): remove or comment the DOCTYPE declarations (2 lines) from the scripts src/Header.php and index.php.

1.7 どうすればダンプや CSV エクスポートを gzip 圧縮できるのでしょうか? 動いていないようですが。

これらの機能はプラットフォーム (Unix か Windows か、セーフモードかどうか、など) からの独立性を高めるために PHP の gzencode() 関数に基づいています。そのため、Zlib サポート (--with-zlib) が必要です。

1.8 テーブルにテキストファイルが挿入できません。セーフモードになっているというエラーが出ます。

アップロードされたファイルは PHP によって、 php.ini の変数 upload_tmp_dir で定義された "upload dir" の中に保存されます (ふつうシステムのデフォルトは /tmp です)。セーフモードで動作している Apache サーバには、以下のセットアップを行い合理的に安全であるファイルのアップロードを有効化することをお勧めします。

  • mkdir /tmp/php でアップロード用の別なディレクトリを作ります
  • chown apache.apache /tmp/php で所有者を Apache サーバのユーザ/グループにします
  • chmod 600 /tmp/php で適切なパーミッションを設定します
  • php.iniupload_tmp_dir = /tmp/php を追加します
  • Apache を再起動します

1.9 (取り下げ)。

1.10 セキュアサーバ上で稼動させている phpMyAdmin のファイルアップロードで困っています。ブラウザは Internet Explorer で、 Apache サーバを使っています。

phpWizard フォーラムで "Rob M" が勧めていたように、httpd.conf に以下の行を追加してください。

SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

こうすると、Internet Explorer と SSL にまつわる多くの問題が解決されるようです。

1.11 インポートタブからファイルをアップロードすると 'open_basedir 制限' が出ます。

バージョン 2.2.4 以降、phpMyAdmin はサーバの open_basedir 制限をサポートしています。しかしながら、一時ディレクトリを作成して、 $cfg['TempDir'] にそのディレクトリを設定する必要があります。アップロードしたファイルはそこに移され、 SQL コマンドの実行が終わったら削除されます。

1.12 MySQL の root のパスワードをなくしてしまいました。どうしたらよいのでしょうか?

phpMyAdmin は使用している MySQL サーバに対して認証を行いますので、 phpMyAdmin のパスワードを紛失した場合は、 MySQL レベルで復旧する必要があります。

MySQL のマニュアルに パーミッションをリセットする 方法の説明があります。

ホスティングプロバイダによってインストールされた MySQL サーバを使用している場合は、そのサポートに連絡してパスワードを回復してください。

1.13 (取り下げ)。

1.14 (取り下げ)。

1.15 mysql.user のカラム名で問題が発生しました。

MySQL の古いバージョンでは UserPassword のカラムが userpassword という名前でした。カラム名を現在の標準にあわせて修正してください。

1.16 (メモリ、HTTP、タイムアウトのせいで) 大きなダンプファイルをアップロードできません。

バージョン 2.7.0 以降はインポートエンジンが書き直されたため、この問題は起こらないはずです。可能であればお使いの phpMyAdmin を最新のバージョンにアップグレードして新しいインポート機能をご利用ください。

まずは php.ini 設定ファイルの max_execution_time, upload_max_filesize, memory_limit, post_max_size の値を確認してください (あるいはプロバイダに確認してもらってください)。この 3 つの設定はいずれも PHP 経由で送信/取り扱いできるデータサイズの上限を決めるものです。また、 post_max_sizeupload_max_filesize より大きくなければなりません。アップロードが大きすぎたり、ホスティングプロバイダが設定を変更したくない場合は、いくつかの回避策があります。

  • $cfg['UploadDir'] 機能をご覧ください。この機能を使うと、SCP や FTP といったお好みの転送法でファイルをサーバにアップロードできるようになります。ファイルをアップロードしたら、phpMyAdmin はその一時ディレクトリからファイルをインポートできるようになります。詳しくはこのドキュメントの 設定 をご覧ください。

  • (BigDump のような) ユーティリティを利用してアップロードの前にファイルを分割する方法もあります。このユーティリティはもとより、サードパーティ製のアプリケーションは一切サポートできませんが、そういったものを利用して成功したユーザがいることは承知しています。

  • シェル (コマンドライン) にアクセスできるのであれば、MySQL を利用して直接ファイルをインポートする方法もあります。その場合は MySQL の中で "source" コマンドを使ってください。

    source filename.sql;
    

1.17 phpMyAdmin が対応しているデータベースのバージョンは?

MySQL では、バージョン 5.5 以降に対応しています。古い MySQL のバージョンに対しては、 Downloads ページで古いバージョンの phpMyAdmin を提供しています (サポートが切れているかもしれません)。

MariaDB はバージョン 5.5 以降に対応しています。

1.17a MySQL サーバに接続できません。かならず "Client does not support authentication protocol requested by server; consider upgrading MySQL client" というエラーメッセージが返ってきます

古い MySQL クライアントライブラリで MySQL にアクセスしようとしています。 MySQL クライアントライブラリのバージョンは phpinfo() の出力でチェックできます。一般に、 1.17 phpMyAdmin が対応しているデータベースのバージョンは? で示したマイナーバージョン以上のサーバを使用してください。この問題は一般的に 4.1 以上のバージョンの MySQL で起こります。MySQL の認証ハッシュが変わったのに、お使いの PHP が古い方法を試そうとするためです。この問題を適切に解決するには、お使いの MySQL のバージョンに合わせた適切なクライアントライブラリの mysqli 拡張モジュール を使用するようにしてください。詳細 (とその対策) については MySQL のドキュメント をご覧ください。

1.18 (取り下げ)。

1.19 「リレーション表示」機能を実行できません。使っているフォントを認識してくれないようです。

この機能を実現するのに利用している TCPDF ライブラリは、いくつかの特別なファイルがないとフォントを利用できません。 TCPDF マニュアル を参照してこれらのファイルを構築してください。

1.20 mysqli や mysql 拡張モジュールがないというエラーが出ます。

PHP が MySQL サーバに接続する際には「MySQL 拡張モジュール」という MySQL の関数セットを必要とします。この拡張は PHP の配布ファイルに含まれている (コンパイルで組み込まれている) こともありますが、そうでない場合、動的に読み込む必要があります。拡張名はおそらく mysqli.sophp_mysqli.dll ですが、phpMyAdmin はこの拡張モジュールを読み込もうとして失敗しています。通常、この問題は "PHP-MySQL" または同様の名前のソフトウェアパッケージをインストールすることで解決できます。

PHP が MySQL 拡張モジュールとして提供しているインタフェースは、 mysqlmysqli の 2 つがありました。 mysql インタフェースは PHP 7.0 で削除されました。

この問題は php.ini に間違ったパスが指定されていたり、間違った php.ini を使用していたりすると発生することもあります。

拡張機能のファイルが extension_dir が指すフォルダに存在し、 php.ini の対応する行がコメントアウトされていないことを確認してください (現在の設定を確認するには phpinfo() が利用できます)。

[PHP]

; Directory in which the loadable extensions (modules) reside.
extension_dir = "C:/Apache2/modules/php/ext"

php.ini は (特に Windows では) 複数の場所から読み込まれる可能性がありますので、正しいものを更新していることを確認してください。 Apache を使用している場合、 PHPIniDir ディレクティブを使用してこのファイルに特定のパスを使用するように指示できます。

LoadModule php7_module "C:/php7/php7apache2_4.dll"
<IfModule php7_module>
    PHPIniDir "C:/php7"
    <Location>
       AddType text/html .php
       AddHandler application/x-httpd-php .php
    </Location>
</IfModule>

まれにこの問題は、 PHP に読み込まれている他の拡張モジュールが MySQL 拡張モジュールの読み込みを妨げていることで発生することもあります。まだ失敗する場合は、 php.ini から他のデータベースの拡張モジュールをコメントアウトしてみてください。

1.22 「テキストファイルの場所」フィールドが見つからないのでアップロードできません。

いちばんありがちな理由は、 php.inifile_uploads パラメータが "on" になっていないことです。

1.23 MySQL を Win32 マシンで稼動させているのですが、新規テーブルを作成するたびにテーブル名とカラム名が小文字に変わってしまいます!

これは MySQL の設定項目の lower_case_table_names が Win32 版のデフォルトでは 1 (ON) になっているためです。この動作はこの設定を 0 (OFF) に変更するだけで変えられます。おそらく Windows ディレクトリにある my.ini ファイルを編集し、 [mysqld] グループに次の行を追加するだけです。

set-variable = lower_case_table_names=0

注釈

大文字と小文字の区別のないファイルシステムで --lower-case-table-names=0 を用いてこの変数を 0 に強制的に設定し、 MyISAM にアクセスして大文字と小文字が異なるテーブル名を使用すると、インデックスが競合する可能性があります。

次に、そのファイルを保存して MySQL サービスを再起動します。このディレクティブの値は次のクエリでいつでもチェックできます。

SHOW VARIABLES LIKE 'lower_case_table_names';

1.24 (取り下げ)。

1.25 Windows XP で Apache に mod_gzip-1.3.26.1a を組み込んで稼動させているのですが、 SQL クエリを実行したときに変数が定義されていないといった問題が出ます。

Jose Fandos からのヒントとして、 httpd.conf に下記の 2 行があったら、以下のようにコメントにしてください。

# mod_gzip_item_include file \.php$
# mod_gzip_item_include mime "application/x-httpd-php.*"

このバージョンの Apache (Windows) の mod_gzip には、PHP スクリプトの扱いに問題があるからです。もちろん、上記の変更を行ったら Apache を再起動する必要があります。

1.26 phpMyAdmin を IIS のドキュメントルートにインストールしたところなのですが、phpMyAdmin を実行しようとすると「No input file specified(入力ファイルが指定されていません)」というエラーが出ます。

これはパーミッションの問題です。phpmyadmin フォルダを右クリックして、プロパティを選んでください。セキュリティタブを開き、 "追加 (Add)"をクリックして、一覧から "IUSR_machine” を選択します。このユーザにパーミッションを設定すれば動くはずです。

1.27 巨大なページ (例えば、多くのテーブルある db_structure.php) を表示しようとすると空白ページが表示されます。

これは PHP のバグ で、GZIP 出力バッファリングが有効になっていると発生します。これ (config.inc.php の中の $cfg['OBGzip']) をオフにすれば動作するはずです。このバグは PHP 5.0.0 で修正されました。

1.28 MySQL サーバがときどきクエリを拒否して「Errorcode: 13」というメッセージを返してきます。どういうことでしょうか?

これは MySQL のバグです。 lower_case_table_names が 1 になっているのにデータベース/テーブル名に大文字が含まれていると起こることがあります。修正するには、この設定をオフにして、すべてのデータベース/テーブル名を小文字に変換してから、再度オンにしてください。また、MySQL 3.23.56 / 4.0.11-gamma からはバグフィックスも用意されています。

1.29 テーブルを作成したりカラムを編集したりすると、エラーが出てカラムが複製されてしまいます。

Apache の設定によっては PHP が .php ファイルの解釈を間違ってしまうことがあります。

この問題が起こるのは、下記のように 2 組の異なった (矛盾をきたす) 設定項目を使用しているためです。

SetOutputFilter PHP
SetInputFilter PHP

および

AddType application/x-httpd-php .php

私たちが見たある例では、一方の設定が /etc/httpd/conf/httpd.conf に、もう一方の設定が /etc/httpd/conf/addon-modules/php.conf に入っていました。推奨される方法は AddType なので、前者の両方の行をコメントアウトして Apache を再起動します。

#SetOutputFilter PHP
#SetInputFilter PHP

1.30 "navigation.php: Missing hash" というエラーが出ます。

この問題はサーバが Turck MMCache を稼動させていると起こることがわかっていますが、MMCache をバージョン 2.3.21 にアップグレードすれば解決します。

1.17 phpMyAdmin が対応している MySQL のバージョンは?

リリース 4.5 以降は、 phpMyAdmin は PHP 5.5 以降のみに対応しています。リリース 4.1 の phpMyAdmin は PHP 5.3 以降のみに対応しています。 PHP 5.2 は、リリース 4.0.x を使用することができます。

phpMyAdmin 4.6 以降は PHP 7 に対応しています。 PHP 7.1 は 4.6.5 以降で対応しており、 PHP 7.2 は 4.7.4 以降で対応しています。

HHVM は phpMyAdmin 4.8 まで対応しています。

Since release 5.0, phpMyAdmin supports only PHP 7.1 and newer. Since release 5.2, phpMyAdmin supports only PHP 7.2 and newer. Since release 6.0, phpMyAdmin supports only PHP 8.1 and newer.

1.32 IIS で HTTP 認証を利用できますか?

はい。以下の手順は phpMyAdmin 2.6.1 を IIS 5.1 の ISAPI モードで動かした PHP 4.3.9 で確認しました。

  1. php.ini ファイルに cgi.rfc2616_headers = 0 を設定します
  2. ウェブサイトのプロパティ -> ディレクトリセキュリティ -> 匿名アクセス ダイアログボックスで、匿名アクセス チェックボックスをチェックし、それ以外のチェックボックスのチェックを外します (つまり、有効になっている場合は 基本認証統合 Windows 認証ダイジェスト認証 のチェックを外します)。 OK をクリックします。
  3. カスタムエラー で、 401;1 から 401;5 までを選択し、 既定値に設定 ボタンをクリックします。

参考

RFC 2616

1.33 (取り下げ)。

1.34 データベースやテーブルのページに直接アクセスできますか?

はい。そのままでも http://server/phpMyAdmin/index.php?server=X&db=database&table=table&target=script のような URL を利用することができます。 server 引数には、 config.inc.php で参照した数値のホスト番号 ($i より) を使用することができます。 table と script の部分はオプションです。

http://server/phpMyAdmin/database[/table][/script] のような URL を使いたい場合は、さらにいくつかの設定をする必要があります。以下の例は Apache ウェブサーバにしか適用できません。まずはグローバル設定でいくつかの機能を有効にしてあることを確認してください。 phpMyAdmin をインストールしたディレクトリについては Options SymLinksIfOwnerMatchAllowOverride FileInfo を有効にする必要がありますし、mod_rewrite を有効にしておく必要もあります。あとは、以下のような .htaccess ファイルを phpMyAdmin をインストールした場所のルートフォルダに作成する必要があります (忘れずにディレクトリ名を修正してください)。

RewriteEngine On
RewriteBase /path_to_phpMyAdmin
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&table=$2&target=$3 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&target=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ index.php?db=$1&table=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)$ index.php?db=$1 [R]

バージョン 5.1.0 で変更: target 引数を使用した対応は phpMyAdmin 5.1.0 で削除されました。代わりに route 引数を使用してください。

1.35 Apache の CGI で HTTP 認証が使用できますか?

はい。ただし、以下のリライト規則を使用して、 CGI へ認証用変数を渡す必要があります。

RewriteEngine On
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

1.36 "500 Internal Server Error" というエラーが出ます。

これには多くの要因があり、サーバのエラーログファイルを見れば手がかりが得られる場合があります。

1.38 Suhosin が有効になっているサーバ上で phpMyAdmin を使うことはできますか?

はい。ただし、Suhosin のデフォルトの設定値は、一部の操作で問題があることが知られています。例えば、多くのカラムを持っていて 主キー がないテーブルや、文字列の 主キー を持っているテーブルの編集などです。

Suhosin の設定はいくつかのケースでは誤動作につながる可能性があります。phpMyAdmin は 1 回の HTTP リクエスト内で多量のカラムの転送を必要とするアプリケーションであり、Suhosin は HTTP リクエストに対して何らかの防止を行おうとするものであるため、この問題を完全に回避することはできません。一般的に、すべての suhosin.request.*suhosin.post.*suhosin.get.* の設定項目は、phpMyAdmin の使用に対して悪影響を与えます。Suhosin によって削られた変数が発生したかをエラーログで確認できるので、この問題を診断して設定がうまく合うように調整することができます。

Suhosin の設定オプションのほとんどは、デフォルト値で大抵の状況において動作するでしょう。ただし、少なくとも以下のパラメータは調整することをお勧めします。

さらにセキュリティを高めるため、以下のとおり変更することをお勧めします。

$cfg['SuhosinDisableWarning'] 設定を使用して警告を無効にすることもできます。

1.39 https を経由して接続すると、ログインすることはできますが、接続が http にリダイレクトされてしまいます。この挙動の原因は何ですか?

これは、サイトが https を使用していることを PHP スクリプトが認識していないことが原因です。使用するウェブサーバに応じて、アクセスに使用する URL とスキームについて PHP に通知するように構成する必要があります。

たとえば Apacheでは、設定で SSLOptionsStdEnvVars が有効になっていることを確認してください。

1.41 データベースを表示してその権限を参照しようとすると、未知のカラムに関するエラーが表示されます。

MySQL サーバの権限テーブルが最新の状態ではありません。サーバ上で mysql_upgrade コマンドを実行する必要があります。

1.42 ロボットから phpMyAdmin へのアクセスを防ぐにはどうすればいいのでしょうか?

.htaccess に、ユーザエージェントフィールドに基づいてアクセスをフィルタリングするルールを追加することができます。防ぐ手立てとしてはきわめて簡単な方法ですが、少なくともいくつかの検索ロボットからは防ぐことが可能です。

RewriteEngine on

# Allow only GET and POST verbs
RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR]

# Ban Typical Vulnerability Scanners and others
# Kick out Script Kiddies
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pikto|scan|acunetix).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]

# Ban Search Engines, Crawlers to your administrative panel
# No reasons to access from bots
# Ultimately Better than the useless robots.txt
# Did google respect robots.txt?
# Try google: intitle:phpMyAdmin intext:"Welcome to phpMyAdmin *.*.*" intext:"Log in" -wiki -forum -forums -questions intext:"Cookies must be enabled"
RewriteCond %{HTTP_USER_AGENT} ^.*(AdsBot-Google|ia_archiver|Scooter|Ask.Jeeves|Baiduspider|Exabot|FAST.Enterprise.Crawler|FAST-WebCrawler|www\.neomo\.de|Gigabot|Mediapartners-Google|Google.Desktop|Feedfetcher-Google|Googlebot|heise-IT-Markt-Crawler|heritrix|ibm.com\cs/crawler|ICCrawler|ichiro|MJ12bot|MetagerBot|msnbot-NewsBlogs|msnbot|msnbot-media|NG-Search|lucene.apache.org|NutchCVS|OmniExplorer_Bot|online.link.validator|psbot0|Seekbot|Sensis.Web.Crawler|SEO.search.Crawler|Seoma.\[SEO.Crawler\]|SEOsearch|Snappy|www.urltrends.com|www.tkl.iis.u-tokyo.ac.jp/~crawler|SynooBot|crawleradmin.t-info@telekom.de|TurnitinBot|voyager|W3.SiteSearch.Crawler|W3C-checklink|W3C_Validator|www.WISEnutbot.com|yacybot|Yahoo-MMCrawler|Yahoo\!.DE.Slurp|Yahoo\!.Slurp|YahooSeeker).* [NC]
RewriteRule .* - [F]

1.43 数百のカラムがあるテーブルの構造を表示できないのはなぜですか?

PHP の memory_limit が小さすぎるからです。 php.ini で調整してください。

1.44 phpMyAdmin のディスク上のインストールサイズを減らすにはどうすればいいですか?

一部のユーザから、 phpMyAdmin のインストールサイズを縮小する要求があります。これは推奨できず、不足している機能について混乱を招く可能性がありますが、実行することはできます。削除すると安全に機能を削減できるファイルと対応する機能の一覧は次の通りです。

  • ./locale/ フォルダ、または、使用されていないサブフォルダ (インタフェースの翻訳)
  • Any unused themes in ./public/themes/ except the default theme pmahomme.
  • ./libraries/language_stats.inc.php (翻訳統計)
  • ./doc/ (ドキュメント)
  • ./setup/ (セットアップスクリプト)
  • ./examples/ (構成例)
  • ./sql/ (拡張機能を設定するための SQL スクリプト)
  • ./js/src/ (./js/dist/ を再ビルドするためのソースファイル)
  • ./js/global.d.ts JS 型宣言ファイル
  • rm -rv vendor/tecnickcom/tcpdf && composer dump-autoload --no-interaction --optimize --dev を実行してください (PDF へのエクスポート)
  • rm -rv vendor/williamdes/mariadb-mysql-kbs && composer dump-autoload --no-interaction --optimize --dev を実行してください。 (MariaDB および MySQL のドキュメントへの外部リンク)
  • rm -rv vendor/code-lts/u2f-php-server && composer dump-autoload --no-interaction --optimize --dev を実行してください。 (U2F 二要素認証)
  • rm -rv vendor/pragmarx/* && composer dump-autoload --no-interaction --optimize --dev を実行してください (2FA 二要素認証)
  • rm -rv vendor/bacon/bacon-qr-code && composer dump-autoload --no-interaction --optimize --dev を実行してください (QR コード生成による 2FA 二要素認証)

1.45 ログインしようとすると、 caching_sha2_password が不明な認証方法であることに関するエラーメッセージが表示されます

MySQL バージョン 8 以降を使用してログインすると、次のようなエラーメッセージが表示される場合があります。

mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]

mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

このエラーは、 PHP と MySQL 間のバージョン互換性の問題が原因です。 MySQL プロジェクトは新しい認証方法を導入しました (私たちのテストによれば、バージョン 8.0.11 から始まりました) が、 PHP にはその認証方法を使用する機能が含まれていませんでした。 PHPは、これが PHP バージョン 7.4 で修正されたことを報告しています。

これに遭遇したユーザは、 PHP インストールをアップグレードすることをお勧めしますが、回避策があります。次のようなコマンドで、 MySQL ユーザアカウントが古い認証を使用するように設定することができます。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

設定

2.1 "Warning: Cannot add header information - headers already sent by ..." というエラーメッセージが表示されます。何が問題なのですか?

config.inc.php ファイルを修正して、先頭の <?php タグの前にも末尾の ?> タグの後にも何もない (すなわち、改行、スペース、文字などがない) ようにしてください。

2.2 phpMyAdmin が MySQL に接続できません。何が悪いのでしょうか?

PHP のセットアップに問題があるか、ユーザ名/パスワードが間違っているかのどちらかです。 mysql_connect を使う小さなスクリプトを書いて、動くかどうか確かめてみてください。動かないようなら、PHP をコンパイルするときに MySQL の対応を組み込んでいなかったのかもしれません。

2.3 "Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) ..." というエラーメッセージが表示されます。どうすればよいのでしょうか?

エラーメッセージは Error #2002 - The server is not responding (or the local MySQL server's socket is not correctly configured) となることもあります。

まず、 MySQL で使用されているソケットを特定する必要があります。これを行うには、サーバに接続し、 MySQL の bin ディレクトリに移動します。このディレクトリには、 mysqladmin という名前のファイルがあります。 ./mysqladmin variables と入力すると、 MySQL サーバに関する一連の情報が得られ、その中にソケット (例えば /tmp/mysql.sock) が含まれています。 ISP に接続情報を要求することもできます。自分自身でホスティングしている場合は、コマンドラインクライアント 'mysql' から接続し、 'status' と入力すると、接続タイプとソケットまたはポート番号が取得できます。

次に、このソケットを使用するように PHP に指示する必要があります。これを php.ini 内で行うとすべての PHP が対象となり、 config.inc.php 内で行うと phpMyAdmin に対してのみ実行できます。例えば、 $cfg['Servers'][$i]['socket'] です。また、このファイルのパーミッションがウェブサーバで読み取り可能であることを確認してください。

私の RedHat-Box では、MySQL のソケットは /var/lib/mysql/mysql.sock です。 php.ini に次のような行がありますから

mysql.default_socket = /tmp/mysql.sock

これを次のように変更してください

mysql.default_socket = /var/lib/mysql/mysql.sock

それから apache を再起動すれば動くはずです。

MySQL ドキュメントの対応する部分 も読んでください。

2.4 phpMyAdmin を実行しようとしているのですが、ブラウザに何も表示されません。どうすればよいのでしょうか?

phpMyAdmin の設定ファイルで $cfg['OBGzip'] の設定項目を false に設定してみてください。これが役立つかもしれません。また、PHP のバージョン番号を確かめてください。 "b" または "alpha" という文字が含まれている場合はテスト版の PHP が稼動しているということです。これはあまりよいことではありませんので、テスト版でないものにアップグレードしてください。

2.6 localhost にポート転送しているホストの MySQL サーバにアクセスしようとすると、 "Access denied for user: 'root@localhost' (Using password: YES)" というエラーが出ます。

ポート転送を介して別のホストにリダイレクトするローカルホスト上のポートを使用している場合、 MySQL は期待どおりにローカルホストを解決できません。 Erik Wasser は「解決策は次のとおりです。ホストが "localhost" の場合 MySQLは (コマンドラインツール mysql も) 常にソケット接続を使用して処理を高速化しようとします。そして、それはポート転送を備えたこの構成では機能しません。ホスト名として "127.0.0.1" を入力すると、すべてが正しくなり、 MySQL はその TCP 接続を使用します。」と説明しています。

2.7 テーマの使い方と作り方

カスタムテーマ を参照してください。

2.8 "Missing parameters" というエラーが出ます。どうしたらよいのでしょうか?

確認すべき点がいくつかあります。

  • config.inc.php の中で、 $cfg['PmaAbsoluteUri'] の設定項目を空欄にしてみてください。 4.7 認証ウインドウが複数回表示されます。なぜでしょうか? も参照してください。
  • インストールされている PHP が壊れているか、Zend Optimizer を更新する必要があるかもしれません。<https://bugs.php.net/bug.php?id=31134> を参照してください。
  • Hardened PHP を使っていて、ini の設定項目 varfilter.max_request_variables がデフォルト値 (200) などの低い値になっている場合、テーブルのカラム数が多いとこのエラーが出ることがあります。適切な値に調整してください (ヒントをくれた Klaus Dorninger に感謝)。
  • php.ini の設定項目 arg_separator.input の値が ";" であった場合はこのエラーになります。 "&;" に置き換えてください。
  • If you are using Suhosin, you might want to increase request limits.
  • php.ini の設定項目 session.save_path で指定したディレクトリが、存在しないか読み取り専用になっている (これは PHP インストーラのバグ によって起こります)。

2.9 アップロード進行状況バーが見えるようにする

アップロード中に進行状況バーを表示できるようにするには、サーバが uploadprogress 拡張に対応している、もしくは PHP 5.4.0 以降である必要があります。それに加えて、PHP において JSON 拡張モジュールが有効になっていなければなりません。

PHP 5.4.0以降を使用している場合は、 php.inisession.upload_progress.enabled1 に設定する必要があります。ただし、 phpMyAdmin バージョン 4.0.4 以降、問題のある動作のため、セッションベースのアップロードの進捗状況は一時的に非アクティブ化されています。

2.10 ランダムなバイト列を生成するには

暗号に適したランダムなバイト列を生成する方法の1つに、 PHPrandom_bytes<https://www.php.net/random_bytes> 関数を使用する方法があります。この関数はバイナリ文字列を返すので、返す値をコピーできるようにする前に印刷可能な形式に変換しておく必要があります。

例えば、 $cfg['blowfish_secret'] 設定ディレクティブでは、32バイト長の文字列を要求します。次のコマンドを使用すると、この文字列の16進数表現を生成することができます。

php -r 'echo bin2hex(random_bytes(32)) . PHP_EOL;'

上記の例では、次のようなものが出力されます。

f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851

そして、この16進数の値を設定ファイルで使用することができます。

$cfg['blowfish_secret'] = sodium_hex2bin('f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851');

ここでは、`sodium_hex2bin<https://www.php.net/sodium_hex2bin>`_ 関数を使用して、16進数の値をバイナリ形式へ戻しています。

既知の制限

3.1 HTTP 認証を使っているときにログアウトすると、同じユーザ名では再ログインできません。

これは phpMyAdmin が利用している認証のメカニズム (プロトコル) による制限です。この問題を回避するには、開いているブラウザのウィンドウを一度すべて閉じてから、phpMyAdmin に戻ってください。再ログインできるようになっているはずです。

3.2 大きなテーブルを圧縮モードでダンプするとメモリ制限のエラーや時間制限のエラーが出ます。

圧縮されたダンプがメモリ上に生成されるために、PHP のメモリ制限にひっかかるのが原因です。 gzip/bzip2 エクスポートについてはバージョン 2.5.4 以降での $cfg['CompressOnFly'] (逐次圧縮) を使うとこの問題を克服できます (デフォルトで有効)。 zip エクスポートではこの方法が行えませんので、大きめのダンプの zip ファイルが必要な場合、別の方法をとる必要があります。

3.3 InnoDB テーブルでテーブルやカラムの名称を変更すると外部キーのリレーションが切れます。

これは InnoDB のバグです。 <http://bugs.mysql.com/bug.php?id=21704> を参照してください。

3.4 MySQL サーバの配布ファイルにバンドルされてきた mysqldump ツールで作成したダンプをインポートできません。

この問題は、古いバージョンの mysqldump が次のような無効なコメントを作成するためです。

-- MySQL dump 8.22
--
-- Host: localhost Database: database
---------------------------------------------------------
-- Server version 3.23.54

このコードで無効なのはハイフン - を並べた区切り線の部分です。この区切り線は、mysqldump で作成したダンプにはかならず一度登場します。このダンプを利用するには、ダンプを修正して MySQL で有効な形にする必要があります。つまり、 -- ------------------------------------------------------- のように先頭 2 つのハイフンのあとに空白を入れるか、 #--------------------------------------------------------- のように行の先頭に # を付け加える必要があるということです。

3.5 入れ子になったフォルダを使用すると、複数の階層が間違った方法で表示されます。

区切り文字列を文字なしで複数回使用したり、テーブル名の最初や最後に使用したりしないでください。必要な場合は、別の TableSeparator を使用するか、その機能を無効にすることを検討してください。

3.6 (取り下げ)。

3.7 カラム数の多い(100 以上)テーブルがあるのですが、このテーブルを表示しようとすると "Warning: unable to parse url" というエラーがたくさん出ます。どうすれば直るのでしょうか?

テーブルに 主キーユニークキー もない場合は、行を特定するために長い式を使う必要があります。これが parse_url 関数で問題を起こしています。解決策は、 主キーユニークキー を作成することです。

3.8 カラムに MIME 変換を適用したら、 (クリック可能な) HTML フォームが使えません!

phpMyAdmin が結果を表示するテーブルは (複数行削除チェックボックス用の) フォームコンテナに囲まれているため、その中に入れ子にするフォームを置くことはできません。ただし、 tbl_row_delete.php を対象とした親フォームのコンテナはそのまま残して、その中に独自の入力要素のみ加えるようにすれば、どんなフォームでもテーブルの中に入れることができます。送信用の input フィールドをカスタマイズすると、フォームのデータは表示しているページに再送されますので、変換機能のなかで $HTTP_POST_VARS を有効にしてください。 変換機能の効果的な使い方のチュートリアルについては、 phpMyAdmin の公式ホームページの Link の部分 をご覧ください。

3.9 MySQL サーバに "--sql_mode=ANSI" を適用するとエラーメッセージが出ます。

MySQL が ANSI 互換モードで実行されているときは、 SQL の組み立て方に大きく変わる部分があります (<https://dev.mysql.com/doc/refman/5.7/ja/sql-mode.html> を参照)。とりわけ重要なのが、引用符 (") が識別子を囲む文字として解釈され、文字列を囲む文字とはみなされなくなることです。そのため、 phpMyAdmin 内部の多くの操作が無効な SQL 文になるのです。この動作には回避策がありません。この問題についての最新情報は issue #7383 に投稿されます。

3.10 主キーがなく、同じ表記がある場合。 SELECT の結果、同じ値を持つカラムが複数表示された場合 (例えば SELECT lastname from employees where firstname like 'A%' を実行して "Smith" という値が 2 つ表示された場合)、編集をクリックしても意図した通りの行を編集しているのか分かりません。

テーブルに 主キー を設定するようにしてください。そうすると phpMyAdmin は編集や削除のリンクに主キーを使用するようになります。

3.11 InnoDB のテーブルの行数が正しくありません。

phpMyAdmin は簡潔な方法で行数を取得していますが、この方法では InnoDB テーブルの場合に概数しか返ってきません。この結果を修正する方法は $cfg['MaxExactCount'] を参照してください。ただし、これは性能に深刻な影響を与える可能性があります。もっとも、概算の行数をクリックすると、正確な行数に簡単に置き換えることができます。これは、最下部に表示されている行数の合計値をクリックすれば、すべてのテーブルを一度に更新できます。

3.12 (取り下げ)。

3.13 USE の後にハイフンを含むデータベース名を入力するとエラーが出ます。

我々が MySQL 5.1.49 で行ったテストでは、API がそのような構文の USE コマンドを認めていないことを確認しています。

3.14 SELECT 権限を持っていないカラムが 1 つでもあると、テーブルを参照することができません。

これは初期の頃から phpMyAdmin の制限として知られており、将来的に解決される見込みはありません。

3.15 (取り下げ)。

3.16 (取り下げ)。

3.17 (取り下げ)。

3.18 複数のテーブルを含む CSV ファイルをインポートすると、単一のテーブルにまとめられてしまいます。

CSV 形式の中で複数のテーブルを区分する確実な方法はありません。当分の間は、複数のテーブルを含む CSV ファイルを分割する必要があります。

3.19 ファイルをインポートすると、 phpMyAdmin は int、 decimal、 varchar 型のみを使用してデータ構造を定めてしまいました。

現在、インポート時の型の検出システムは、これらの MySQL 型しかカラムに割り当てません。将来的にはさらに追加される可能性がありますが、当面はインポート後に必要に応じて構造を編集する必要があります。また、 phpMyAdmin は、特定のカラムにある最大のサイズの要素を、適切な型のカラムサイズとして使用することに注意してください。その列に大きな要素を追加することがわかっている場合は、それに応じてカラムのサイズを手動で調整する必要があります。これは効率のために行われます。

3.20 アップグレード後、一部のブックマークがなくなったり、内容が表示されなかったりします。

ある時点で、ブックマークの内容の保存に使用される文字セットが変更されました。新しい phpMyAdmin のバージョンでブックマークを再作成することをお勧めします。

3.21 á などの Unicode 文字を含むユーザ名でログインすることができません。

これは、 MySQL サーバがデフォルトの文字セットとして UTF-8 を使用するように設定されていない場合に発生する可能性があります。これは、 PHP と MySQL サーバの相互作用の制限です。 PHP が認証前に文字セットを設定する方法はありません。

ISP やマルチユーザのインストール

4.1 当方は ISP です。 phpMyAdmin のセントラルコピーを一つだけセットアップするようにできますか?それとも顧客ごとにインストールする必要がありますか?

バージョン 2.0.3 以降、phpMyAdmin はユーザ全員が使えるセントラルコピーをセットアップできるようになりました。この機能の開発は、 NetCologne GmbH 社がスポンサーになってくださいました。このためには MySQL のユーザ管理、および phpMyAdmin の HTTP またはクッキー認証を正しくセットアップする必要があります。

4.2 phpMyAdmin を悪意のあるアクセスから守るようにするお勧めの方法はありますか?

これはシステムによりますが、外部の人からアクセスできないサーバで実行している場合は、ウェブサーバ にバンドルされているディレクトリ保護機能を使えば十分です (例えば、Apache なら .htaccess ファイルを利用できます)。外部の人がサーバに telnet でアクセスできる場合は、 phpMyAdmin の HTTP またはクッキー認証機能を使用してください。

お勧めの方法:

  • config.inc.php ファイルは chmod 660 にしておいてください。
  • phpMyAdmin ファイルはすべて chown -R phpmy.apache を実行しておいてください。ここで phpmy にはあなただけがパスワードを知っているユーザ、 apache には Apache を実行しているグループ名が入ります。
  • PHP およびウェブブラウザのセキュリティ推奨事項に従ってください。

4.3 /lang/libraries の中のファイルをインクルードできないというエラーが出ます。

php.ini を確認するか、システム管理者に確認を依頼するかしてください。 include_path には "." を含める必要があり、 open_basedir を使用する場合は、 phpMyAdmin の通常の操作を許可するためには "." および "./lang" を含める必要があります。

4.4 HTTP 認証を使用すると必ず「Access denied (アクセスは拒否されました)」になります。

いくつかの理由が考えられます。

  • $cfg['Servers'][$i]['controluser']$cfg['Servers'][$i]['controlpass'] が間違っている。
  • ログインダイアログで指定したユーザ名/パスワードが無効である。
  • phpMyAdmin ディレクトリに別のセキュリティ機構がセットアップされている (例えば .htaccess ファイル)。これは phpMyAdmin の認証の邪魔になりますので除去してください。

4.5 ユーザに独自のデータベースの作成を許可することはできますか?

バージョン 2.2.5 以降、ユーザ管理ページでユーザのデータベース名にワイルドカードを入れたり (例えば「joe%」)、権限を与えることができるようになりました。例えば、 SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER 権限を与えれば、ユーザが自分のデータベースを作成/管理できるようになります。

4.6 どうすればホストベースの認証の追加指定を利用できますか?

古い .htaccess ファイルに既存のルールがある場合は、それを持ってきて 'deny'/'allow''from' の文字列の間にユーザ名を加えてください。ユーザ名にワイルドカード '%' が使えるようになっている場合はとても便利です。それが済んだら、あとは更新した行を $cfg['Servers'][$i]['AllowDeny']['rules'] 配列に加えるだけです。

できあいのサンプルが欲しい場合は、下記をお試しください。これは ’root' ユーザがプライベートネットワークの IP ブロックに含まれないネットワークからログインするのを防ぐものです。

//block root from logging in except from the private networks
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] = [
    'deny root from all',
    'allow root from localhost',
    'allow root from 10.0.0.0/8',
    'allow root from 192.168.0.0/16',
    'allow root from 172.16.0.0/12',
];

4.7 認証ウインドウが複数回表示されます。なぜでしょうか?

これは phpMyAdmin を起動するために使用した URL が、 $cfg['PmaAbsoluteUri'] に設定されている URL と異なるためです。例えば、 "www" が抜けていたり、設定ファイルではドメイン名で登録してあるのに IP アドレスで入力した場合などです。

4.8 phpMyAdmin を起動する URL 使うことができるパラメータはどれですか?

phpMyAdmin の起動時には、 dbserver の引数を使用することができます。最後のものにはホストのインデックス番号 (設定ファイルの $i) または設定ファイル内にあるホスト名のどちらかを指定することができます。

例えば、特定のデータベースに直接ジャンプするには、 URL を https://example.com/phpmyadmin/?db=sakila のように構築することができます。

バージョン 4.9.0 で変更: pma_usernamepma_password 引数を使用した対応は phpMyAdmin 4.9.0 で削除されました (PMASA-2019-4 を参照)。

ブラウザまたはクライアント OS

5.1 カラム数が 14 を超えるテーブルを作ろうとすると、メモリ不足のエラーが出てコントロールが動作しなくなります。

この問題は Win98/98SE 環境下でしか再現できませんでした。 WinNT4 や Win2K 環境下でテストすると 60 を超えるカラムでも簡単に作成できました。回避策はカラム数を減らして作成し、それからテーブルのプロパティに戻って、残りのカラムを追加することです。

5.2 Xitami 2.5b4 を使うと phpMyAdmin がフォームのフィールドを処理しなくなります。

これは phpMyAdmin の問題ではなく、Xitami の既知のバグです。フォームを使うスクリプトやウェブサイトすべてで起こる問題です。 Xitami サーバをアップグレードまたはダウングレードしてください。

5.3 Konqueror でうまくテーブルをダンプできません (phpMyAdmin 2.2.2)。

Konqueror 2.1.1 の場合、無圧縮、 zip、 gzip のダンプは動作します。ただし、ダンプで提案されるファイル名は常に、 'tbl_dump.php' となります。 bzip2 のダンプは動作しないようです。 Konqueror 2.2.1 の場合、無圧縮のダンプは動作します。 zip ダンプはユーザの一時ディレクトリに置かれますので、 Konqueror を閉じる前に移動しないと消滅します。 gzip ダンプはエラーメッセージが出ます。 Konqueror 2.2.2 ではテストが必要です。

5.5 (取り下げ)。

5.6 (取り下げ)。

5.7 ブラウザで再読み込み (リロード) すると、ようこそページに戻ってしまいます。

ブラウザによっては再読み込みしたいフレームのなかで右クリックできますので、右フレームのなかで右クリックして再読み込みしてください。

5.8 Mozilla 0.9.7 では、クエリボックスで修正したクエリをうまく送信できません。

Mozilla のバグのようです。0.9.6 では OK でした。Mozilla の将来のバージョンでも注意していきます。

5.9 Mozilla の 0.9.? 〜 1.0 と Netscape 7.0-PR1 では SQL クエリの編集領域で空白を入力できません。ページがスクロールダウンしてしまいます。

これは Mozilla のバグです (<a href="http://bugzilla.mozilla.org/">BugZilla</a> のバグ #26882 を参照)。

5.10 (取り下げ)。

5.11 ドイツ語のウムラウトなどの拡張 ASCII 文字が正しく表示されません。

ブラウザの文字セットが phpMyAdmin のスタートページで選択した言語ファイルの文字セットと合っているか確認してください。また、最近のブラウザならたいてい対応している自動検出モードを試してみる手もあります。

5.12 Mac OS X:Safari ブラウザでは特殊文字が「?」になってしまいます。

この問題を報告してくれた macOS ユーザによると、Chimera、Netscape、Mozilla ではこの問題は起こらないそうです。

5.13 (取り下げ)

5.14 (取り下げ)

5.15 (取り下げ)

5.16 Internet Explorer で「アクセスが拒否されました(Access is denied)」という JavaScript のエラーが出ます。あるいは、 Windows で phpMyAdmin を実行できません。

以下の点を確認してください。

  • config.inc.php$cfg['PmaAbsoluteUri'] の設定を IP アドレスに設定して、ドメイン名を含む URL で phpMyAdmin を起動しているか、またはその逆の状況になっているかもしれません。
  • IE や Microsoft Security Center のセキュリティ設定が高すぎるためにスクリプトの実行をブロックされている。
  • Windows Firewall が Apache と MySQL をブロックしていること。 "in" と "out" の両方で HTTP のポート (80 または 443) と MySQL のポート (通常は 3306) が開いている必要があります。

5.17 Firefox でデータ行を削除したりデータベースを削除したりできません。

多くのユーザが、Firefox にインストールしたタブブラウザ拡張が問題を起こしていることを確認しています。

5.18 (取り下げ)

5.19 ブラウザで JavaScript エラーが発生します。

ブラウザの拡張機能をいくつか組み合わせた場合の問題だと報告されています。トラブルを解決するには、すべての拡張機能を無効にしてブラウザのキャッシュをクリアし、問題が発生しなくなるかを確認してください。

5.20 Content Security Policy 違反のエラーが出ます。

次のようなエラーが発生した場合です。

Refused to apply inline style because it violates the following Content Security Policy directive

これは通常、 Content Security Policy ヘッダを不正に書き換えるソフトウェアが原因で発生します。通常、これはそのようなエラーを引き起こしているアンチウイルスプロキシまたはブラウザアドオンによって引き起こされます。

これらのエラーが表示された場合は、ウイルス対策ソフトの HTTP プロキシを無効にするか、 Content Security Policy の書き換えを無効にしてみてください。それでも問題が解決しない場合は、ブラウザ拡張機能を無効にしてみてください。

または、サーバの構成の問題である可能性もあります (ウェブサーバが Content Security Policy ヘッダを発行するように構成されている場合、 phpMyAdmin のヘッダをオーバーライドする可能性があります)。

次のプログラムがこの種のエラーを引き起こすことが知られています。

  • カスペルスキーインターネットセキュリティ

5.21 テーブルを参照したり、 SQL クエリを実行したりすると、安全でない可能性のある操作に関するエラーが発生します。

次のようなエラーが発生した場合です。

A potentially unsafe operation has been detected in your request to this site.

これは通常、リクエストフィルタリングを行うウェブアプリケーションファイアウォールが原因で発生します。 SQL インジェクションを防止するためのものですが、 phpMyAdmin は SQL クエリを実行するように設計されたツールであるため、使用できなくなるものです。

ウェブアプリケーションファイアウォールの設定で phpMyAdmin のスクリプトを許可するか、 phpMyAdmin のパスに対して完全に無効にするかしてください。

次のプログラムがこの種のエラーを引き起こすことが知られています。

  • Wordfence Web Application Firewall

phpMyAdmin の使用

6.1 テーブルに新しい行が挿入できません。または、テーブルが作成できません。MySQL が SQL エラーを返します。

SQL のエラーを注意深く調べてみてください。よく問題になるのが、カラムのデータ型の指定を間違ていることです。よくある間違いには次のようなものがあります。

  • VARCHAR を size 引数なしで使用している
  • TEXT または BLOB に size 引数をつけて使用している

また、MySQL マニュアルの文法の章を見て、文法が正しいか確認してください。

6.2 テーブルを作るときに2つのカラムにインデックスを設定したのですが、phpMyAdmin がその2つのカラムに1つしかインデックスを生成しません。

これは、複数カラムのインデックスの作り方です。インデックスを2つ作りたいときは、テーブルを作成するときに最初のインデックスを作り、保存してから、テーブルのプロパティを表示し、インデックスのリンクをクリックして次のインデックスを作るようにしてください。

6.3 テーブルに NULL 値を挿入するにはどうするのですか?

バージョン 2.2.3 以降、 null にできるカラムにはそれぞれチェックボックスが用意されています。 2.2.3 より前は、カラムの値として引用符なしで "null" と入力する必要がありました。バージョン 2.5.5 以降では、本当の NULL 値を得るにはチェックボックスを使う必要があります。 "NULL" 入力すると、そのカラムには NULL 値ではなく、文字で NULL が入ります(これは PHP4 の動作です)。

6.4 データベースやテーブルのバックアップはどうするのですか?

ナビゲーションパネルでデータベース名またはテーブル名をクリックすると、プロパティが表示されます。次に、メニューの [エクスポート] をクリックすると、構造、データ、またはその両方をダンプすることができます。これにより、データベース/テーブルの再作成に使用できる標準の SQL ステートメントが生成されます。 phpMyAdmin が結果のダンプを端末に送信できるように、 [ファイルとして保存] を選択する必要があります。 PHP の構成に応じて、ダンプを圧縮するオプションが表示されます。 $cfg['ExecTimeLimit'] 構成変数も参照してください。このテーマに関する追加のヘルプについては、このドキュメントで「ダンプ」という単語を探してください。

6.5 どうすればダンプからデータベースやテーブルを復元 (アップロード) できますか?どうすれば ".sql" ファイルを実行できますか?

ナビゲーションパネルでデータベース名をクリックすると、プロパティが表示されます。右側のフレームのタブのリストから [インポート] を選択します (または、 phpMyAdmin のバージョンが 2.7.0 より前の場合は [SQL])。 [テキストファイルの場所] の節で、ダンプファイル名へのパスを入力するか、 [参照] ボタンを使用します。次に、 [実行] をクリックします。バージョン 2.7.0 では、インポートエンジンが書き直されています。可能であれば、新しい機能を利用するためにアップグレードすることをお勧めします。このテーマに関する追加のヘルプについては、このドキュメントで「アップロード」という単語を探してください。

注: 古いバージョンの MySQL からエクスポートされたダンプを新しいバージョンの MySQL にインポートする際にエラーが発生した場合は、 6.41 古いバージョンの MySQL (5.7.6より前) からエクスポートされたダンプを新しいバージョンの MySQL (5.7.7 以降) にインポートしているときにインポートエラーが発生します。同じ古いバージョンにインポートすると正常に動作するのに? を確認してください。

6.6 どうすれば定型問い合わせの際にリレーションテーブルを使えるのでしょうか?

これは、 "mydb" データベースにあるテーブル persons, towns, countries の例です。 pma__relation テーブルがない場合は、構成の節の説明に従って作成してください。次に、サンプルテーブルを作成します。

CREATE TABLE REL_countries (
country_code char(1) NOT NULL default '',
description varchar(10) NOT NULL default '',
PRIMARY KEY (country_code)
) ENGINE=MyISAM;

INSERT INTO REL_countries VALUES ('C', 'Canada');

CREATE TABLE REL_persons (
id tinyint(4) NOT NULL auto_increment,
person_name varchar(32) NOT NULL default '',
town_code varchar(5) default '0',
country_code char(1) NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM;

INSERT INTO REL_persons VALUES (11, 'Marc', 'S', 'C');
INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C');

CREATE TABLE REL_towns (
town_code varchar(5) NOT NULL default '0',
description varchar(30) NOT NULL default '',
PRIMARY KEY (town_code)
) ENGINE=MyISAM;

INSERT INTO REL_towns VALUES ('S', 'Sherbrooke');
INSERT INTO REL_towns VALUES ('M', 'Montréal');

適切なリンクと表示情報をセットアップするには、以下のようにします。

  • "REL_persons" テーブルの [構造] をクリックし、次に [リレーションビュー] をクリックする
  • "town_code" については、データベース、テーブル、カラムの各ドロップダウンでそれぞれ "mydb", "REL_towns", "town_code" を選択する
  • "country_code" については、データベース、テーブル、カラムの各ドロップダウンでそれぞれ "mydb", "REL_countries", "country_code" を選択する
  • "REL_towns" テーブルの [構造]、次に [リレーションビュー] をクリックする
  • [表示するカラムを選択 ] 欄で "description" を選択する
  • "REL_countries" テーブルについて直前の2つの手順を繰り返す

それから、以下のようにテストをします。

  • ナビゲーションパネルでデータベース名をクリックする
  • [クエリ] を選択する
  • persons, towns, countries の各テーブルを使用する
  • [クエリを更新する] をクリックする
  • カラムの行で persons.person_name を選択し、 [表示] チェックボックスをクリックする
  • 残り 2 つのカラムの towns.description と countries.descriptions についても同様にする
  • [クエリを更新する] をクリックすると、クエリボックスに正しく結合が生成されたことが分かる
  • [クエリを実行する] をクリックする

6.7 どうすれば [表示するカラム] 機能が利用できますか?

前の例に引き続き、「構成」の章で説明されているように pma__table_info を作成した後、 persons テーブルを表示して、 town code または country code の上にマウスを移動します。 「列の表示」がドロップダウンの利用な可能な値を有効にするための追加機能については、 6.21 編集/挿入モードで、外部のテーブルに基づいた利用可能なカラムの値の一覧を見るにはどうすればよいでしょうか? も参照してください。

6.8 データベースの PDF スキーマを作るにはどうするのですか?

まず、 "relation"、 "table_coords"、 "pdf_pages" という設定変数に値を入れる必要があります。

  • ナビゲーションパネルでデータベースを選択する。
  • 上部のナビゲーションバーで [デザイナ] を選択する。
  • 好きなようにテーブルを動かします。
  • 左のメニューから [スキーマのエクスポート] を選択してください。
  • エクスポートのモーダルが開きます。
  • エクスポートの種類を PDF に選択し、その他の設定を調整することができます。
  • フォームを送信すると、ファイルのダウンロードが始まります。

6.9 phpMyAdmin がカラムのデータ型を変えてしまいます!

これは MySQL が 暗黙のカラム指定の変更 を行うためです。

6.10 権限を作成するとき、データベース名にアンダースコアを入れるとどうなりますか?

アンダースコアの前に をつけないと、ワイルドカードの扱いとなり、アンダースコアは「任意の 1 文字」を表します。従って、データベース名が "john_db" の場合、そのユーザは john1db、john2db … への権限を得ることになります。アンダースコアの前に を付けた場合は、データベース名に実際のアンダースコアがあることを意味します。

6.11 統計ページにある ø という変わった記号は何ですか?

「平均」の意味です。

6.12 エクスポートのオプションについて教えてください。

構造:

  • 「DROP TABLE を追加する」は、インポート中に既存のテーブルが存在していたら そのテーブルを削除する よう MySQL に指示する行を追加します。エクスポート後にテーブルを削除するわけではなく、インポートファイルにのみ影響します。
  • "IF NOT EXISTS” は、テーブルが存在しないときのみ作成します。設定されていない場合、既に存在するテーブル名で異なる構造を指定した場合にエラーになることがあります。
  • 「AUTO_INCREMENT 値を追加する」は、 (あれば) AUTO_INCREMENT 値もバックアップに含めるようにします。
  • 「テーブルやカラムの名前を逆クォートで囲む」は、特殊文字を含むカラム名やテーブル名を保護します。
  • 「コメントの追加」は、 pmadb に設定されているカラムのコメント、リレーション、メディア型を SQL のコメント文の形 (/* xxx */) でダンプに含めます。

データ:

  • 「完全な INSERT 文を作成する」は、すべての INSERT コマンドにカラム名を付与して、より詳しく記述します (ただし、結果のファイルは大きくなります)。
  • 「長い INSERT 文を作成する」は、ダンプファイルを短くするために INSERT の述語とテーブル名を一度しか使わないようにします。
  • 「遅延インサートを使用する」については、 MySQL マニュアル - INSERT DELAYED 構文 の説明をご覧ください。
  • 「INSERT IGNORE を使用する」は、エラーを警告として扱います。こちらも、詳しくは MySQL マニュアル - INSERT 構文 にありますが、これを選択すると、基本的に無効な値があった場合に文全体を失敗とするのではなく、値を調整して挿入が行われます。

6.13 名前にピリオドを含むデータベースを作りたいのですが。

これは良くないことです。 MySQL の構文では通例データベースとテーブルの名前を参照するのに "database.table" と書きますし、さらに悪いことに、 MySQL ではピリオドがついたデータベースを作成することはできるものの、使用したり削除したりすることができません。

6.14 (取り下げ)。

6.15 BLOB のカラム追加して、それにインデックスをつけたいのですが、 MySQL が "BLOB column '...' used in key specification without a key length" と報告します。

これを行う正しい方法は、インデックスなしでカラムを作成し、テーブル構造を表示して「インデックスを作成」ダイアログを使用することです。このページ上で BLOB カラムを選択し、インデックスにサイズを指定できます。これは、BLOBカラムにインデックスを作成するための条件です。

6.16 どうしたら多くの編集項目があるページ内で簡単に移動できますか?

多くのページでは Ctrl+矢印 (Safari では Option+矢印) を使用することで、たくさんの編集フィールド (テーブルの構造の変更、行の編集など) を移動することができます。

6.17 変換機能: 独自の MIME タイプを入力できません!本当にこの機能は役に立つんですか?

メディア型に変換を加えることができない場合、メディア型を定義しても意味がありません。カラムにコメントを付けることができるだけです。独自のメディア型を入力すると、深刻な構文チェックの問題と検証が発生するため、これにより、リスクの高い誤ったユーザ入力状況が発生します。代わりに、関数または空のメディア型定義を使用してメディア型を初期化する必要があります。

加えて、利用できるメディア型の一覧もあります。誰もこれらのメディア型を覚えて、入力できるわけではありませんよね?

6.18 ブックマーク: ブックマークはどこで保管できますか?どうしてクエリボックスの下にブックマークがないのでしょうか?この変数は何でしょうか?

ブックマーク機能を使用するには、 phpMyAdmin 環境保管領域 を構成しておく必要があります。それが済んだら、 SQL タブでブックマークを使用できます。

6.19 エクスポートされたテーブルを含めるための簡単な LATEX ドキュメントを作成するにはどうすればよいですか?

LATEX ドキュメントにテーブルをインクルードすれば簡単にできます。最小限のサンプルドキュメントは次のようになります (エクスポートしたテーブルが table.tex というファイルに入っているとします)。

\documentclass{article} % or any class you want
\usepackage{longtable}  % for displaying table
\begin{document}        % start of document
\include{table}         % including exported table
\end{document}          % end of document

6.20 自分のものではないデータベースがたくさん見えます。また、そういったデータベースにアクセスできません。

あなたはグローバル権限のうち CREATE TEMPORARY TABLES, SHOW DATABASES, LOCK TABLES のうちいずれか1つを持っています。これらの権限があるとすべてのデータベース名が見えてしまいます。ユーザにこれらの権限が必要ない場合は、削除すればデータベース一覧が短くなります。

6.21 編集/挿入モードで、外部のテーブルに基づいた利用可能なカラムの値の一覧を見るにはどうすればよいでしょうか?

テーブル間に適切なリンクを設定し、外部のテーブルに「表示カラム」を設定する必要があります。例については、 6.6 どうすれば定型問い合わせの際にリレーションテーブルを使えるのでしょうか? を参照してください。次に、外部テーブルの値が100以下である場合は、値のドロップダウンリストが表示されます。 2 つの値のリストが表示されます。最初のリストにはキーと表示カラムが含まれ、2番目のリストには表示列とキーが含まれます。これは、キーまたは表示列の最初の文字を入力できるようにするためです。 100 以上の値の場合、外部キー値を参照して1つを選択するための個別のウィンドウが表示されます。デフォルトの制限である 100 を変更するには、 $cfg['ForeignKeyMaxLimit'] を参照してください。

6.22 ブックマーク: テーブルの表示モードに入ったときに、自動的にデフォルトのブックマークを実行できますか?

できます。ブックマークのラベルをテーブル名と同じにして、ブックマークを公開しないでおけば、実行されます。

6.23 エクスポート: phpMyAdmin が Microsoft Excel ファイルをエクスポートできると聞いたのですが?

Microsoft Excel では CSV が簡単に利用できます。

バージョン 3.4.5 で変更: phpMyAdmin 3.4.5 以降、Microsoft Excel 97 以降の形式での直接エクスポートには対応しなくなりました。

6.24 phpMyAdmin が MySQL 4.1.x ネイティブのカラムコメントに対応するようになりましたが、pmadb に保存されているカラムコメントはどうなるのでしょうか?

テーブルの「構造」ページに入ったときに、自動的にそのテーブルの pmadb スタイルのカラムコメントがネイティブのカラムコメントに移行されます。

6.25 (取り下げ)。

6.26 行の範囲選択はどうやるのですか?

範囲の最初の行をクリックして、シフトキーを押しながら範囲の最後の行をクリックします。これは、表示モードまたは構造ページのように、行を閲覧していればいつでも動作します。

6.27 どのような書式の文字列が使えますか?

phpMyAdmin は書式を受け入れるすべての場所において、 @VARIABLE@ 記法および`strftime <https://www.php.net/strftime>`_ 書式文字列が利用できます。変数の展開は文脈に依存しますが (テーブルを選択していないとテーブル名を得られないなど)、以下の変数を使用することができます。

@HTTP_HOST@
phpMyAdmin を稼動させている HTTP ホスト
@SERVER@
MySQL サーバ名
@VERBOSE@
$cfg['Servers'][$i]['verbose'] で定義された詳細な MySQL サーバ名
@VSERVER@
設定されていれば詳細な MySQL サーバの名前、そうでなければ通常の名前
@DATABASE@
現在開いているデータベース
@TABLE@
現在開いているテーブル
@COLUMNS@
現在開いているテーブルのカラム
@PHPMYADMIN@
phpMyAdmin とバージョン番号

6.28 (取り下げ)。

6.29 なぜクエリの結果のテーブルからグラフが作れないのですか?

すべてのテーブルをグラフにできるわけではありません。グラフとして視覚化できるのは、1列、2列、3列のテーブルのみです。さらに、グラフのスクリプトがテーブルを理解するためには、テーブルが特定の形式である必要があります。現在対応している形式は グラフ機能 にあります。

6.30 インポート: ESRI シェイプファイルはどうやってインポートできますか?

ESRI シェイプファイルは、実際には単独ファイルではなく複数のファイルの集合で、空間データが含まれている .shp ファイルと、その空間データに関連するデータが含まれている .dbf ファイルから構成されています。.dbf ファイルから関連するデータを読み込むには、PHP に dBase 拡張 (--enable-dbase) が必要になります。そうでない場合は、空間データのみがインポートされます。

これらのファイルの集合のアップロードは、以下のいずれかの方法を使用することができます。

$cfg['UploadDir'] を使用してアップロードディレクトリを構成し、同じファイル名で .shp ファイルと .dbf ファイルの両方をアップロードし、インポートページから .shp ファイルを選択します。

.shp ファイルと .dbf ファイルを使用して zip アーカイブを作成し、インポートします。これを機能させるには、 $cfg['TempDir'] をウェブサーバのユーザが書き込むことができる場所 (例えば './tmp') に設定する必要があります。

UNIX ベースのシステムで一時ディレクトリを作成するには、以下のようにします。

cd phpMyAdmin
mkdir tmp
chmod o+rwx tmp

6.31 どうやってデザイナでリレーションを作成できますか?

リレーションを選択するには、クリックします。表示されるカラムはピンク色で表示されます。カラムを表示カラムとして設定/解除するには、 [表示するカラムの選択] アイコンをクリックしてから、適切なカラム名をクリックしてください。

6.32 ズーム検索機能はどのように使うことができますか?

検索プロット機能は、テーブル検索とは異なった機能です。データを散布図に描くことにより、テーブルデータを調査するものです。この機能は、テーブルを選択して 検索 タブをクリックしたところから使用できます。 テーブル検索`ページ内のタブに、 :guilabel:`検索プロット の項目があります。

例として 6.6 どうすれば定型問い合わせの際にリレーションテーブルを使えるのでしょうか? の REL_persons テーブルを考えてみてください。検索プロットを使用するには、id と town_code というように、2 つのカラムを選択する必要があります。id の値が一方の軸に置かれた場合、town_code はもう一方の軸に置かれます。それぞれの行は、id と town_code を基に点として散布図内に配置されます。表示されている入力項目より、追加の絞り込み条件を 2 つまで含めることができます。

各点のラベルとして表示される項目を選択することができます。テーブルに表示するカラム (6.7 どうすれば [表示するカラム] 機能が利用できますか? を参照) が設定されている場合は、特に指定しない限りそれがラベルとして扱われます。また、プロットする結果の最大数で、散布図内に表示させたいプロットの最大数が指定できます。描画の指定がよければ、 [実行] をクリックすると散布図が表示されます。

作成された散布図は、マウスホイールでズームの調整が行えます。また、散布図を通じて各点の評価が行えます。細部が判別できる程度まで拡大して、配置されている点の中から評価したいものを探します。点をクリックするとダイアログが開き、描画されている点に対応する行のデータ値が表示されます。必要であればこれらのデータ値は編集することが可能で、 [実行] をクリックすると UPDATE クエリによって内容が変更されます。簡単な使用方法が、散布図の上にある「使い方」リンクをクリックすることにより表示されます。

6.33 テーブル閲覧時に、どうすればカラム名をコピーできますか?

コピーするためにブラウズテーブルのヘッダセル内のカラム名を選択するのは難しいです。カラムはリンク先の列名をクリックしてソートするだけでなく、ヘッダセルをドラッグして並べ替えることもできるからです。カラム名をコピーするには、ツールチップの指示に従って、カラム名の横にある空の領域をダブルクリックしてください。そうすると、カラム名の入力ボックスが表示されます。この入力ボックス内のカラム名を右クリックしてクリップボードにコピーすることができます。

6.34 お気に入りテーブル機能を使用するにはどうすればよいですか?

お気に入りテーブル機能は、最近使用したテーブル機能と非常によく似ています。これは、データベースで頻繁に使用されるテーブルのショートカットをナビゲーションパネルに追加することができます。リストからそれを選択するだけで、リスト内の任意のテーブルに移動することができます。 phpMyAdmin 環境保管領域 を設定していない場合、これらのテーブルはブラウザのローカルストレージに保存されます。そうでない場合は、これらの項目は phpMyAdmin 環境保管領域 に保存されます。

重要: phpMyAdmin 環境保管領域 がない場合、お気に入りのテーブルはブラウザごとに選択したものに基づくため、異なるものになる可能性があります。

お気に入りリストにテーブルを追加するには、データベースのテーブルリストのテーブル名の前にある 灰色 の星をクリックし、黄色になるまで待ってください。リストからテーブルを削除するには、黄色の星をクリックし、再び灰色になるまで待ってください。

config.inc.php ファイルの $cfg['NumFavoriteTables'] を使用すると、ナビゲーションパネルに表示されるお気に入りテーブルの最大数を定義することができます。既定値は 10 です。

6.35 範囲検索機能はどのようにして使うのですか?

範囲検索機能を利用すると、 [検索] タブから表の検索操作を実行している間に、特定のカラムの値の範囲を指定することができます。

この機能を使用するには、カラム名の前にある演算子選択リストから BETWEEN 演算子または NOT BETWEEN 演算子をクリックするだけです。上記のオプションのいずれかを選択すると、そのカラムの 最小値最大値 を尋ねるダイアログボックスが表示されます。 BETWEEN の場合は指定された値の範囲のみが含まれ、 NOT BETWEEN の場合には最終結果から除外されます。

注: 範囲検索機能は Numeric および Date データ型のカラムでのみ機能します。

6.36 主要カラム機能とは何ですか?この機能はどのように使うのですか?

その名前が示すように、主要カラム機能はデータベースごとに主要なカラムのリストを管理することで、同じデータ要素の類似した名前を避け、同じデータ要素のデータ型の一貫性をもたらします。主要リストを使用すると、データベース内の任意のテーブル構造に要素を追加することができるので、似たようなカラム名やカラム定義を記述する手間が省けます。

主要カラムのリストに追加するには、テーブル構造のページに移動し、追加したいカラムをチェックして、 [主要カラムに追加] をクリックしてください。データベースの複数のテーブルから一意のカラムをすべて追加する場合は、データベース構造ページに移動し、対象としたいテーブルを確認してから「主要カラムリストへ追加」を選択してください。

主要カラムリストからカラムを削除する場合は、テーブル構造ページに移動し、削除したいカラムを確認してから、「主要カラムリストから削除」をクリックするだけです。データベースから複数のテーブルからすべてのカラムを削除したい場合は、データベース構造ページに移動し、対象とするテーブルを確認してから「主要カラムリストから削除」を選択してください。

主要カラムリストを表示したり管理したりするには、主要カラムを管理したいデータベースを選択し、トップメニューから「主要カラム」をクリックします。主要カラムリストの編集、削除、新しいカラムの追加ができるページが表示されます。

6.37 テーブル構造の改善機能はどのように使うのですか?

テーブル構造の改善機能は、テーブルの構造を第三正規形にするのに役立ちます。ユーザにウィザードが表示され、正規化のための様々なステップの間に要素について質問を行い、それに応じて新しい構造を提案し、テーブルを第一/第ニ/第三正規形に持ち込むことができます。ウィザードの起動時に、ユーザはテーブル構造をどの正規形まで正規化したいかを選択することができます。

ここでは、第一、第二、第三の3種類の正規形をすべてテストすることができるテーブルの例です。

CREATE TABLE `VetOffice` (
 `petName` varchar(64) NOT NULL,
 `petBreed` varchar(64) NOT NULL,
 `petType` varchar(64) NOT NULL,
 `petDOB` date NOT NULL,
 `ownerLastName` varchar(64) NOT NULL,
 `ownerFirstName` varchar(64) NOT NULL,
 `ownerPhone1` int(12) NOT NULL,
 `ownerPhone2` int(12) NOT NULL,
 `ownerEmail` varchar(64) NOT NULL,
);

上記のテーブルは 主キー がないので第一正規形ではありません。主キーは (petName, ownerLastName, ownerFirstName) になると考えられます。 主キー が提案された通りに選択された場合でも、結果のテーブルには下記の依存関係があるため、第二正規形にも第三正規形にもなりません。

(OwnerLastName, OwnerFirstName) -> OwnerEmail
(OwnerLastName, OwnerFirstName) -> OwnerPhone
PetBreed -> PetType

すなわち、 OwnerEmail は OwnerLastName と OwnerFirstName に依存しています。 OwnerPhone は OwnerLastName と OwnerFirstName に依存しています。 PetType は PetBreed に依存しています。

6.38 どうすればオートインクリメント値を再設定できますか?

AUTO_INCREMENT の値が連続していることを好むユーザもいますが、行を削除した後はそうなるとは限りません。

これを実現するための手順を以下に示します。これらの手順は、ある時点で手動で検証を行う必要があるため、手動で行います。

  • テーブルへの排他的なアクセス権を持っていることを確認する
  • 主キー の列 (すなわち id) の AUTO_INCREMENT 設定を削除する
  • [構造] > [インデックス] で主キーを削除する
  • 新しいカラム future_id を主キー、 AUTO_INCREMENT として作成する
  • テーブルを参照して、新しいインクリメント値が期待通りであることを確認する
  • 古い ID カラムを削除する
  • future_id カラムの名前を id に変更する
  • [構造] > [カラムの移動] で新しい id カラムを移動する

6.39 データベース、テーブル、カラム、プロシージャの名前を変更、コピー、移動時に表示される [権限を調整]とは何ですか?

データベース/テーブル/カラム/プロシージャの名前の変更/コピー/移動時に、 MySQL は自分自身ではこれらのオブジェクトに対する元の権限を変更しません。このオプションを選択することで、 phpMyAdmin がテーブルの権限を調整するので、ユーザは新しいアイテムで同じ権限を持つことができます。

例えば、 'bob'@'localhost' が 'id' という名前のカラムに 'SELECT' 権限を持っていたとします。ここで、このカラムの名前が 'id_new' と変更されると、 MySQL 自身はカラムの権限を新しいカラム名に調整**しません**。 phpMyAdmin はこの調整を自動的に行うことができます。

注:

  • データベースの権限を調整すると、すべてのデータベースに関する要素 (テーブル、カラム、プロシージャ) の権限もデータベースの新しい名前に調整されます。
  • 同様に、テーブルの権限を調整すると、新しいテーブル内の全カラムの権限も調整されます。
  • 権限を調整する際、その操作を行うユーザは以下の権限を持っている**必要があります**。
    • mysql.`db`, mysql.`columns_priv`, mysql.`tables_priv`, mysql.`procs_priv` に対する SELECT, INSERT, UPDATE, DELETE 権限
    • 権限の FLUSH (グローバル)

したがって、これらのオブジェクトの名前変更/コピー/移動中にデータベース/テーブル/カラム/プロシージャをそのまま複製する場合は、このオプションがオンになっていることを確認してください。

6.40 [SQL] ページに「パラメータのバインド」チェックボックスが表示されます。どうやってパラメータのついた SQL クエリを作成するのですか?

バージョン 4.5 から、 phpMyAdmin では [SQL] ページでパラメータを指定したクエリを実行できるようになりました。パラメータの前にはコロン (:) を付け、「パラメータのバインド」チェックボックスをチェックすると、これらのパラメータが識別され、パラメータの入力フィールドが表示されます。フィールドに入力された値は、実行される前にクエリ内で置換されます。

6.41 古いバージョンの MySQL (5.7.6より前) からエクスポートされたダンプを新しいバージョンの MySQL (5.7.7 以降) にインポートしているときにインポートエラーが発生します。同じ古いバージョンにインポートすると正常に動作するのに?

5.7.7 以前の MySQL サーバからエクスポートしたダンプをバージョン 5.7.7 以降の新しい MySQL サーバにインポートしているときに #1031 - Table storage engine for 'table_name' doesn't have this option のようなエラーが発生した場合は、 InnoDB テーブルが ROW_FORMAT=FIXED に対応していないからかもしれません。さらに、 innodb_strict_mode の値によって、これが警告として報告されるか、エラーとして報告されるかが定義されます。

MySQL バージョン 5.7.9 以降では、 innodb_strict_mode のデフォルト値が ON であるため、このような CREATE TABLE または ALTER TABLE 文が検出されるとエラーが生成されます。

インポート中にこのようなエラーを防ぐには、次の2つの方法があります。

  • インポートを開始する前に innodb_strict_mode の値を OFF に変更し、インポートが正常に完了した後に ON にする。
  • これは、次の 2 つの方法で実現できます。
    • [変数] ページへ移動し、 innodb_strict_mode の値を編集する
    • SET GLOBAL `innodb_strict_mode = '[value]'` というクエリを実行する

インポートが完了したら、 innodb_strict_mode の値を元の値にリセットすることが推奨されています。

phpMyAdmin プロジェクト

7.1 バグを見つけました。開発者に知らせるにはどうすればよいですか?

課題追跡システムが <https://github.com/phpmyadmin/phpmyadmin/issues> にあります。セキュリティ上の問題については <https://www.phpmyadmin.net/security> の説明を参照し、開発者に直接メールを送ってください。

7.2 メッセージを新しい言語に翻訳したり、既存の言語を更新したりしたいのですが、どこから始めるのですか?

翻訳はとても歓迎しますし、必要なものは言語スキルだけです。もっとも簡単な方法は オンライン翻訳サービス を使用する方法です。 私たちのウェブサイトの翻訳の節 に翻訳でできることのすべてを見ることができます。

7.3 phpMyAdmin の開発に協力したいのですが、どのように進めればよいでしょうか?

私たちは phpMyAdmin の開発に対するすべての協力を歓迎します。協力できるすべてのことが 私たちのウェブサイトの貢献の節 にあります。

セキュリティ

8.1 phpMyAdmin に対して発行されたセキュリティアラートについての情報はどこで入手できますか?

<https://www.phpmyadmin.net/security/> を参照してください。

8.2 phpMyAdmin を総当たり攻撃から守るにはどうすれば良いですか?

Apache ウェブサーバを使用する場合、 phpMyAdmin は Apache の環境に認証情報をエクスポートして、 Apache のログに記録することができます。現在、2つの変数を利用することができます。

userID
現在アクティブなユーザのユーザ名(ログインする必要はありません)。
userStatus
現在アクティブなユーザのステータスで、 ok (ユーザがログインした), mysql-denied (MySQL がユーザのログインを拒否した), allow-denied (allow/deny ルールで拒否されたユーザ), root-denied (設定で root が拒否された), empty-denied (空のパスワードが拒否された) のうちの一つです。

Apache の LogFormat 設定は、次のようなものです。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n"   pma_combined

あとで、ログ解析ツールを使用して、侵入を試みている可能性のあるものを検出することができます。

8.3 あるファイルを直接読み込むとき、なぜパスが公開されてしまうのですか?

これはサーバ設定の問題です。本番サイトでは display_errors を有効にしないでください。

8.4 phpMyAdmin からエクスポートした CSV ファイルで式インジェクション攻撃ができてしまいます。

Microsoft Excel などの表計算プログラムにインポートすると、任意のコマンドを実行できる可能性のある CSV ファイルを生成することが可能です。

phpMyAdmin によって生成された CSV ファイルには、表計算プログラムが数式として解釈するテキストが含まれている可能性がありますが、これらのフィールドをエスケープすることが適切な動作であるとは考えていません。エスケープしたいテキスト出力とエスケープすべき数式を適切に区別してエスケープする方法はありません。私たちはこれについて長々と議論してきましたが、代わりに入力上のそのようなデータを適切に解析してサニタイズするのは、表計算プログラムの責任であると感じています。

Google も 同様の見解 を持っています。

同期

9.1 (取り下げ).

9.2 (取り下げ).

開発者向け情報

phpMyAdmin はオープンソースですから、協力してくださる方は歓迎します。これまでにもほかの方々が多くのすばらしい機能を書いてくださいました。みなさんにもできることはあります。phpMyAdmin を便利なツールにしていきましょう。

協力することができるすべての項目は、 私たちのウェブサイトの contribute の節 で確認することができます。

セキュリティポリシー

phpMyAdmin 開発チームは、 phpMyAdmin を可能な限り安全にするために多くの努力をしています。しかし、 phpMyAdmin のようなウェブアプリケーションは、多くの攻撃に対して脆弱である可能性があり、それを悪用する新しい方法がまだ模索されています。

報告されたすべての脆弱性に対して、私たちは phpMyAdmin セキュリティアナウンス (PMASA) を発行し、それには CVE ID も割り当てられます。類似する脆弱性を一つの PMASA にグループ化することもあります (例えば、複数の XSS 脆弱性を一つの PMASA の下で発表することがあります)。

脆弱性を発見したと思われる場合は、 セキュリティ問題の報告 を参照してください。

よくある脆弱性

この節では、私たちのコードベースに現れる可能性のある典型的な脆弱性について説明します。このリストは決して完全なものではなく、典型的な攻撃の一面を示すためのものです。

クロスサイトスクリプティング (XSS)

phpMyAdmin がユーザデータの一部、例えばユーザのデータベース内の何かを表示するとき、 HTML の特殊文字をすべてエスケープしなければなりません。このエスケープが行われていない場所があった場合、悪意のあるユーザーがデータベースに特別に作られたコンテンツを流し込み、そのデータベースの他のユーザを騙して何かを実行させてしまう可能性があります。これは、例えば、いくつもの厄介なことをする JavaScript のコードの一部である可能性があります。

phpMyAdmin は、ブラウザ向けの HTML にレンダリングされる前に、すべてのユーザデータをエスケープするようにしています。

クロスサイトリクエストフォージェリ (CSRF)

攻撃者が phpMyAdmin のユーザを騙して、 phpMyAdmin のアクションを誘発するリンクをクリックさせます。このリンクは、電子メールで送信されるか、どこかのウェブサイトから送信されるかのいずれかです。これが成功した場合、攻撃者がユーザの権限を使って何らかのアクションを実行できるようになります。

これを緩和するために、 phpMyAdmin はセンシティブなリクエストにトークンを送信する必要があります。これは、攻撃者が現在有効なトークンを提示せず、提示されたリンクに含めるというものです。

トークンはログインするたびに再生成されるので、一般的には限られた期間しか有効ではなく、攻撃者が有効なものを入手するのが難しくなります。

SQL インジェクション

phpMyAdmin の全体的な目的は SQL クエリを実行することであるため、これは第一の懸念事項ではありません。 mysql の制御接続に関係する場合には SQL インジェクションに気を付けなければなりません。この制御接続は、ログイン中のユーザが持っていない権限を持っていることがあるからです。例えば phpMyAdmin 環境保管領域 へのアクセスです。

(管理用) クエリに含まれるユーザデータは、常に DatabaseInterface::quoteString() を通して実行する必要があります。

総当たり攻撃

phpMyAdmin 自体は、認証の試行回数を制限することはありません。これは、このようなことから保護する方法がないステートレス環境で動作する必要があるためです。

これを軽減するには、 Captcha を使用したり、 fail2ban などの外部ツールを利用したりすることができます。これは phpMyAdmin のインストールを安全にする でより詳しく説明しています。

セキュリティ問題の報告

phpMyAdmin のプログラムコードにセキュリティ上の問題を発見した場合は、それを公開する前に事前に phpMyAdmin セキュリティチーム に連絡してください。このようにすれば私たちが修正を準備し、あなたの発表と同時に修正版をリリースすることができます。また、私たちのセキュリティアナウンスの中で、あなたにクレジットが与えられることになります。オプションで、レポートは以下のフィンガープリントで PGP キー ID DA68AB39218AB947 で暗号化することができます。

pub   4096R/DA68AB39218AB947 2016-08-02
      Key fingerprint = 5BAD 38CF B980 50B9 4BD7  FB5B DA68 AB39 218A B947
uid                          phpMyAdmin Security Team <security@phpmyadmin.net>
sub   4096R/5E4176FB497A31F7 2016-08-02

鍵は鍵サーバから取得するか、ダウンロードサーバにある phpMyAdmin キーリングKeybase を使用して入手することができます。

phpMyAdmin をより安全にするための改善提案があるのであれば、私たちの 問題追跡システム に報告してください。既存の改善提案は、 hardening label で見ることができます。

phpMyAdmin の配布とパッケージ化

このドキュメントは、 Linux ディストリビューションなどの他のソフトウェアパッケージ内で、またはウェブサーバと MySQL サーバを含むすべてを1つのパッケージにまとめて phpMyAdmin を再配布したい人に助言することを目的としています。

一般に、いくつかの基本的な側面 (いくつかのファイルへのパスと動作) は libraries/vendor_config.php でカスタマイズできます。

たとえば、セットアップスクリプトで var に設定ファイルを生成するようにする場合は、 SETUP_CONFIG_FILE/var/lib/phpmyadmin/config.inc.php に変更してください。また、おそらくディレクトリが書き込み可能であるかのチェックもスキップしたいでしょうから、 SETUP_DIR_WRITABLE を false に設定してください。

外部ライブラリ

phpMyAdminにはいくつかの外部ライブラリが含まれており、利用可能な場合はシステムライブラリに置き換たほうがよい場合もありますが、新しいバージョンが同梱したバージョンと互換性があるかどうかをテストする必要があることに注意してください。

現在知られている外部ライブラリのリストは以下の通りです。

js/vendor
js の jQuery フレームワークライブラリと様々な js のライブラリです。
vendor/
ダウンロードキットには、依存関係としてさまざまな Composer パッケージが含まれています。

特定のファイルのライセンス

phpMyAdmin 配布テーマには、ライセンス下にあるコンテンツが含まれています。

CC BY 4.0 または GPL

ベンダー向けのライセンス情報

貢献者一覧

貢献者一覧(年代順)

  • Tobias Ratschiller <tobias_at_ratschiller.com>
    • phpMyAdmin プロジェクトの創始者
    • 1998 年から 2000 年夏までの管理者
  • Marc Delisle <marc_at_infomarc.info>
    • 多言語版 (1998 年 12 月)
    • 様々な修正と改善
    • SQL アナライザの最初のバージョン (の大半)
    • 2001 年から 2015 年までの管理者
  • Olivier Müller <om_at_omnis.ch>
    • 2001 年 3 月に SourceForge phpMyAdmin プロジェクトを立ち上げ
    • 既存のさまざまな CVS ツリーの同期をとり、新機能、バグフィックスを反映
    • 多言語対応の改善。動的言語選択
    • たくさんのバグ修正と改善
  • Loïc Chapeaux <lolo_at_phpheaven.net>
    • JavaScript、DHTML、DOM の書き直し、最適化
    • スクリプトを書き直して PEAR のコーディング基準にあわせ、XHTML1.0 と CSS2 準拠のコードを生成するようにした
    • 言語検知システムの改善
    • たくさんのバグ修正と改善
  • Robin Johnson <robbat2_at_users.sourceforge.net>
    • データベースのメンテナンスコントロール
    • テーブル種別コード
    • ホスト認証 IP アドレスによる許可/拒否
    • データベースを使用した設定 (未完)
    • SQL パーサと書式整備機能
    • SQL バリデータ
    • たくさんのバグ修正と改善
  • Armel Fauveau <armel.fauveau_at_globalis-ms.com>
    • ブックマーク機能
    • 複数ダンプ機能
    • gzip ダンプ機能
    • zip ダンプ機能
  • Geert Lund <glund_at_silversoft.dk>
    • 修正多数
    • phpwizard.net の旧 phpMyAdmin ユーザフォーラムのモデレータ
  • Korakot Chaovavanich <korakot_at_iname.com>
    • 「新しい行として挿入する」機能
  • Pete Kelly <webmaster_at_trafficg.com>
    • ダンプコードの書き直しと修正
    • バグフィックス
  • Steve Alberty <alberty_at_neptunlabs.de>
    • PHP4 向けにダンプコードを書き直し
    • mySQL テーブル統計機能
    • バグフィックス
  • Benjamin Gandon <gandon_at_isia.cma.fr>
    • バージョン 2.1.0.1 の主著者
    • バグフィックス
  • Alexander M. Turek <me_at_derrabus.de>
    • MySQL 4.0 / 4.1 / 5.0 との互換性
    • MySQLi サポートによる抽象データベースインタフェース (PMA_DBI)
    • 権限の管理
    • XML エクスポート
    • 様々な機能や修正
    • ドイツ語ファイルの更新
  • Mike Beck <mike.beck_at_web.de>
    • 定型問い合わせにおける自動結合処理
    • 印刷用表示(printview)における links カラム
    • リレーションビュー
  • Michal Čihař <michal_at_cihar.com>
    • インデックス作成/表示機能の強化
    • MySQL とは異なる HTML 文字セットを利用する機能
    • エクスポート機能の改善
    • 様々な機能や修正
    • チェコ語ファイルの更新
    • phpMyAdminの現在のウェブサイト
  • "MySQL Form Generator for PHPMyAdmin" の Christophe Gesché (https://sourceforge.net/projects/phpmysqlformgen/)
    • 複数テーブルを印刷用表示するためのパッチを提案
  • Garvin Hicking <me_at_supergarv.de>
    • テーブルの行を縦に表示するパッチの作成
    • Javascript ベースのクエリウィンドウ + SQL 履歴の作成
    • カラム/データベースコメントの改善
    • (MIME) - カラムの変換
    • 左フレームのデータベースに独自の別名を利用
    • テーブルの階層/入れ子表示
    • PDF リレーションを WYSIWYG 配布するための PDF スクラッチボード
    • 新しいアイコンセット
    • カラムプロパティページの縦表示
    • バグフィックス、追加機能、サポート、ドイツ語の追加を少々
  • Yukihiro Kawada <kawada_at_den.fujifilm.co.jp>
    • 日本語漢字エンコード変換機能
  • Piotr Roszatycki <d3xter_at_users.sourceforge.net> および Dan Wilson
    • クッキー認証モード
  • Axel Sander <n8falke_at_users.sourceforge.net>
    • テーブルリレーションリンク機能
  • Maxime Delorme <delorme.maxime_at_free.fr>
    • PDF スキーマ出力。 "FPDF" ライブラリ (<http://www.fpdf.org/> を参照) の Olivier Plathey、 "UFPDF" ライブラリの Steven Wittens、 "TCPDF" ライブラリ (<https://tcpdf.org/> を参照) の Nicola Asuni にも感謝。
  • Olof Edlund <olof.edlund_at_upright.se>
    • SQL バリデータサーバ
  • Ivan R. Lanin <ivanlanin_at_users.sourceforge.net>
    • phpMyAdmin ロゴ(2004 年 6 月まで)
  • Mike Cochrane <mike_at_graftonhall.co.nz>
    • Horde プロジェクトより、blowfish ライブラリ (リリース 4.0 で終了)
  • Marcel Tschopp <ne0x_at_users.sourceforge.net>
    • mysqli サポート
    • たくさんのバグ修正と改善
  • Nicola Asuni (Tecnick.com)
  • Michael Keck <mkkeck_at_users.sourceforge.net>
    • 2.6.0 向けの再デザイン
    • phpMyAdmin の帆船ロゴ(2004 年 6 月)
  • Mathias Landhäußer
    • カンファレンスでの発表
  • Sebastian Mendel <cybot_tm_at_users.sourceforge.net>
    • インタフェースの改善
    • バグフィックス多数
  • Ivan A Kirillov
    • 新しいレプリケーションデザイナ
  • Raj Kissu Rajandran (Google Summer of Code 2008)
    • BLOB ストリームをサポート (バージョン 4.0 からは非サポート)
  • Piotr Przybylski (Google Summer of Code 2008, 2010 and 2011)
    • セットアップスクリプトの改良
    • ユーザ設定機能
    • Drizzle のサポート
  • Derek Schaefer (Google Summer of Code 2009)
    • インポートシステムの改良
  • Alexander Rutkowski (Google Summer of Code 2009)
    • コマンド追跡機能
  • Zahra Naeem (Google Summer of Code 2009)
    • 同期機能 (リリース 4.0 で削除)
  • Tomáš Srnka (Google Summer of Code 2009)
    • レプリケーションサポート
  • Muhammad Adnan (Google Summer of Code 2010)
    • 複数のフォーマットへのリレーションスキーマのエクスポート
  • Lori Lee (Google Summer of Code 2010)
    • ユーザインタフェースの改善
    • ENUM/SET エディタ
    • エクスポート/インポートの簡易インタフェース
  • Ninad Pundalik (Google Summer of Code 2010)
    • Ajax 化したインタフェース
  • Martynas Mickevičius (Google Summer of Code 2010)
    • グラフ機能
  • Barrie Leslie
    • PBMS PHP 拡張による BLOB ストリームのサポート (バージョン 4.0 からは非サポート)
  • Ankit Gupta (Google Summer of Code 2010)
    • グラフィカルなクエリデザイナ
  • Madhura Jayaratne (Google Summer of Code 2011)
    • OpenGIS サポート
  • Ammar Yasir (Google Summer of Code 2011)
    • 検索プロット
  • Aris Feryanto (Google Summer of Code 2011)
    • ブラウザモードの改良
  • Thilanka Kaushalya (Google Summer of Code 2011)
    • AJAX 化
  • Tyron Madlener (Google Summer of Code 2011)
    • ステータスページのクエリ集計とグラフ
  • Zarubin Stas (Google Summer of Code 2011)
    • 自動化されたテスト
  • Rouslan Placella (Google Summer of Code 2011 および 2012)
    • ストアドルーチン、トリガ、イベントのサポートの改善
    • イタリア語の翻訳更新
    • フレームの削除、新しいナビゲーション
  • Dieter Adriaenssens
    • バグフィックス多数
    • オランダ語の翻訳更新
  • Alex Marin (Google Summer of Code 2012)
    • 新しいプラグインとプロパティのシステム
  • Thilina Buddika Abeyrathna (Google Summer of Code 2012)
    • 構造改善
  • Atul Pratap Singh (Google Summer of Code 2012)
    • 構造改善
  • Chanaka Indrajith (Google Summer of Code 2012)
    • 構造改善
  • Yasitha Pandithawatta (Google Summer of Code 2012)
    • 自動化されたテスト
  • Jim Wigginton (phpseclib.sourceforge.net)
    • phpseclib
  • Bin Zu (Google Summer of Code 2013)
    • 構造改善
  • Supun Nakandala (Google Summer of Code 2013)
    • 構造改善
  • Mohamed Ashraf (Google Summer of Code 2013)
    • AJAX のエラー報告
  • Adam Kang (Google Summer of Code 2013)
    • 自動化されたテスト
  • Ayush Chaudhary (Google Summer of Code 2013)
    • 自動化されたテスト
  • Kasun Chathuranga (Google Summer of Code 2013)
    • インタフェースの改善
  • Hugues Peccatte
    • 例によるクエリの読み込み/保存 (データベース検索ブックマーク)
  • Smita Kumari (Google Summer of Code 2014)
    • 主要カラムリスト
    • テーブル構造の改善 (正規化)
  • Ashutosh Dhundhara (Google Summer of Code 2014)
    • インタフェースの改善
  • Dhananjay Nakrani (Google Summer of Code 2014)
    • PHP エラーレポート
  • Edward Cheng (Google Summer of Code 2014)
    • SQL クエリコンソール
  • Kankanamge Bimal Yashodha (Google Summer of Code 2014)
    • 構造改善: デザイナーとスキーマの統合
  • Chirayu Chiripal (Google Summer of Code 2014)
    • カスタムフィールドハンドラ (MIME 変換に基づく入力)
    • テーブル/カラムの名前を変更してエクスポート
  • Dan Ungureanu (Google Summer of Code 2015)
    • 新しいパーサとアナライザ
  • Nisarg Jhaveri (Google Summer of Code 2015)
    • ページ関連の設定
    • SQL デバッグのコンソールへの統合
    • その他のユーザインタフェースの改善
  • Deven Bansod (Google Summer of Code 2015)
    • CSS を使用した印刷ビュー
    • その他のユーザインタフェースの改善と新機能
  • Deven Bansod (Google Summer of Code 2017)
    • エラー報告サーバの改良
    • Selenium テストの改良
  • Manish Bisht (Google Summer of Code 2017)
    • モバイルユーザインタフェース
    • インライン JavaScript コードの除去
    • その他のユーザインタフェースの改善
  • Raghuram Vadapalli (Google Summer of Code 2017)
    • 複数テーブルのクエリインタフェース
    • デザイナーでほかのデータベースのテーブルで作業できるようにした
    • その他のユーザインタフェースの改善
  • Maurício Meneghini Fauth
    • 主要な改良と JavaScript コアへのアップグレード
    • JavaScript ライブラリ機能の近代化
    • テンプレートの最新化と Twig の導入
  • William Desportes
    • PHPStan に基づくコーディングスタイルの改善
    • 外部の MySQL および MariaDB のドキュメントへのリンクの改善
    • その他の多数のバグ修正
  • Emanuel Bronshtein
    • 総合的なセキュリティ評価と提案
  • Lakshya Arora (Google Summer of Code 2018)
    • 次のような様々な改善点があります。
      • ユーザ設定のローカルストレージへの統合
      • セッションの期限切れ後のモーダルログインの使用
      • CHECK CONSTRAINTS の対応の追加
      • その他
  • Saksham Gupta (Google Summer of Code 2018)
    • テーマ自動生成ツール
  • Leonardo Strozzi (Google Summer of Code 2018)
    • Twig テンプレートの構造改善およびその他の内部コードの改善
  • Piyush Vijay (Google Summer of Code 2018)
    • Webpack、Babel、Yarn、eslint、Jsdoc の導入を含む JavaScript コードの最新化

その他、バージョン 2.1.0 以降、細々とした修正、強化、バグフィックス、新規言語サポート等をしてくださった方々。

Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita, Péter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow, Mats Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kläger, Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, Andreas Pauley, Bernard M. Piller, Laurent Haas, "Sakamoto", Yuval Sarna, www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun, Peter Svec, Michael Tacelosky, Rachim Tamsjadi, Kositer Uros, Luís V., Martijn W. van der Lee, Algis Vainauskas, Daniel Villanueva, Vinay, Ignacio Vazquez-Abrams, Chee Wai, Jakub Wilk, Thomas Michael Winningham, Vilius Zigmantas, "Manuzhai".

翻訳者

以下の方々が phpMyAdmin の翻訳に貢献しました。

  • アルバニア語

    • Arben Çokaj <acokaj_at_shkoder.net>
  • アラビア語

    • Ahmed Saleh Abd El-Raouf Ismae <a.saleh.ismael_at_gmail.com>
    • Ahmed Saad <egbrave_at_hotmail.com>
    • hassan mokhtari <persiste1_at_gmail.com>
  • アルメニア語

    • Andrey Aleksanyants <aaleksanyants_at_yahoo.com>
  • アゼルバイジャン語

    • Mircəlal <01youknowme_at_gmail.com>
    • Huseyn <huseyn_esgerov_at_mail.ru>
    • Sevdimali İsa <sevdimaliisayev_at_mail.ru>
    • Jafar <sharifov_at_programmer.net>
  • ベラルーシ語

    • Viktar Palstsiuk <vipals_at_gmail.com>
  • ブルガリア語

    • Boyan Kehayov <bkehayov_at_gmail.com>
    • Valter Georgiev <blagynchy_at_gmail.com>
    • Valentin Mladenov <hudsonvsm_at_gmail.com>
    • P <plamen_mbx_at_yahoo.com>
    • krasimir <vip_at_krasio-valia.com>
  • カタルーニャ語

    • josep constanti <jconstanti_at_yahoo.es>
    • Xavier Navarro <xvnavarro_at_gmail.com>
  • 中国語 (中国)

    • Vincent Lau <3092849_at_qq.com>
    • Zheng Dan <clanboy_at_163.com>
    • disorderman <disorderman_at_qq.com>
    • Rex Lee <duguying2008_at_gmail.com>
    • <fundawang_at_gmail.com>
    • popcorner <memoword_at_163.com>
    • Yizhou Qiang <qyz.yswy_at_hotmail.com>
    • zz <tczzjin_at_gmail.com>
    • Terry Weng <wengshiyu_at_gmail.com>
    • whh <whhlcj_at_126.com>
  • 中国語 (台湾)

    • Albert Song <albb0920_at_gmail.com>
    • Chien Wei Lin <cwlin0416_at_gmail.com>
    • Peter Dave Hello <xs910203_at_gmail.com>
  • ケルン語

    • Purodha <publi_at_web.de>
  • チェコ語

    • Aleš Hakl <ales_at_hakl.net>
    • Dalibor Straka <dalibor.straka3_at_gmail.com>
    • Martin Vidner <martin_at_vidner.net>
    • Ondra Šimeček <ondrasek.simecek_at_gmail.com>
    • Jan Palider <palider_at_seznam.cz>
    • Petr Kateřiňák <petr.katerinak_at_gmail.com>
  • デンマーク語

    • Aputsiaĸ Niels Janussen <aj_at_isit.gl>
    • Dennis Jakobsen <dennis.jakobsen_at_gmail.com>
    • Jonas <jonas.den.smarte_at_gmail.com>
    • Claus Svalekjaer <just.my.smtp.server_at_gmail.com>
  • オランダ語

      1. Voogt <a.voogt_at_hccnet.nl>
    • dingo thirteen <dingo13_at_gmail.com>
    • Robin van der Vliet <info_at_robinvandervliet.nl>
    • Dieter Adriaenssens <ruleant_at_users.sourceforge.net>
    • Niko Strijbol <strijbol.niko_at_gmail.com>
  • 英語 (イギリス)

    • Dries Verschuere <dries.verschuere_at_outlook.com>
    • Francisco Rocha <j.francisco.o.rocha_at_zoho.com>
    • Marc Delisle <marc_at_infomarc.info>
    • Marek Tomaštík <tomastik.m_at_gmail.com>
  • エスペラント語

    • Eliovir <eliovir_at_gmail.com>
    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • エストニア語

    • Kristjan Räts <kristjanrats_at_gmail.com>
  • フィンランド語

    • Juha Remes <jremes_at_outlook.com>
    • Lari Oesch <lari_at_oesch.me>
  • フランス語

    • Marc Delisle <marc_at_infomarc.info>
  • フリジア語

    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • ガリシア語

    • Xosé Calvo <xosecalvo_at_gmail.com>
  • ドイツ語

    • Julian Ladisch <github.com-t3if_at_ladisch.de>
    • Jan Erik Zassenhaus <jan.zassenhaus_at_jgerman.de>
    • Lasse Goericke <lasse_at_mydom.de>
    • Matthias Bluthardt <matthias_at_bluthardt.org>
    • Michael Koch <michael.koch_at_enough.de>
    • Ann + J.M. <phpMyAdmin_at_ZweiSteinSoft.de>
    • <pma_at_sebastianmendel.de>
    • Phillip Rohmberger <rohmberger_at_hotmail.de>
    • Hauke Henningsen <sqrt_at_entless.org>
  • ギリシア語

    • Παναγιώτης Παπάζογλου <papaz_p_at_yahoo.com>
  • ヘブライ語

    • Moshe Harush <mmh15_at_windowslive.com>
    • Yaron Shahrabani <sh.yaron_at_gmail.com>
    • Eyal Visoker <visokereyal_at_gmail.com>
  • ヒンズー語

    • Atul Pratap Singh <atulpratapsingh05_at_gmail.com>
    • Yogeshwar <charanyogeshwar_at_gmail.com>
    • Deven Bansod <devenbansod.bits_at_gmail.com>
    • Kushagra Pandey <kushagra4296_at_gmail.com>
    • Nisarg Jhaveri <nisargjhaveri_at_gmail.com>
    • Roohan Kazi <roohan_cena_at_yahoo.co.in>
    • Yugal Pantola <yug.scorpio_at_gmail.com>
  • ハンガリー語

    • Akos Eros <erosakos02_at_gmail.com>
    • Dániel Tóth <leedermeister_at_gmail.com>
    • Szász Attila <undernetangel_at_gmail.com>
    • Balázs Úr <urbalazs_at_gmail.com>
  • インドネシア語

    • Deky Arifianto <Deky40_at_gmail.com>
    • Andika Triwidada <andika_at_gmail.com>
    • Dadan Setia <da2n_s_at_yahoo.co.id>
    • Dadan Setia <dadan.setia_at_gmail.com>
    • Yohanes Edwin <edwin_at_yohanesedwin.com>
    • Fadhiil Rachman <fadhiilrachman_at_gmail.com>
    • Benny <tarzq28_at_gmail.com>
    • Tommy Surbakti <tommy_at_surbakti.net>
    • Zufar Fathi Suhardi <zufar.bogor_at_gmail.com>
  • インターリングア

    • Giovanni Sora <g.sora_at_tiscali.it>
  • イタリア語

    • Francesco Saverio Giacobazzi <francesco.giacobazzi_at_ferrania.it>
    • Marco Pozzato <ironpotts_at_gmail.com>
    • Stefano Martinelli <stefano.ste.martinelli_at_gmail.com>
  • 日本語

    • k725 <alexalex.kobayashi_at_gmail.com>
    • Hiroshi Chiyokawa <hiroshi.chiyokawa_at_gmail.com>
    • Masahiko HISAKAWA <orzkun_at_ageage.jp>
    • worldwideskier <worldwideskier_at_yahoo.co.jp>
  • カンナダ語

    • Robin van der Vliet <info_at_robinvandervliet.nl>
    • Shameem Ahmed A Mulla <shameem.sam_at_gmail.com>
  • 韓国語

    • Bumsoo Kim <bskim45_at_gmail.com>
    • Kyeong Su Shin <cdac1234_at_gmail.com>
    • Dongyoung Kim <dckyoung_at_gmail.com>
    • Myung-han Yu <greatymh_at_gmail.com>
    • JongDeok <human.zion_at_gmail.com>
    • Yong Kim <kim_at_nhn.com>
    • 이경준 <kyungjun2_at_gmail.com>
    • Seongki Shin <skshin_at_gmail.com>
    • Yoon Bum-Jong <virusyoon_at_gmail.com>
    • Koo Youngmin <youngminz.kr_at_gmail.com>
  • 中央クルド語

    • Alan Hilal <alan.hilal94_at_gmail.com>
    • Aso Naderi <aso.naderi_at_gmail.com>
    • muhammad <esy_vb_at_yahoo.com>
    • Zrng Abdulla <zhyarabdulla94_at_gmail.com>
  • ラトビア語

    • Latvian TV <dnighttv_at_gmail.com>
    • Edgars Neimanis <edgarsneims5092_at_inbox.lv>
    • Ukko <perkontevs_at_gmail.com>
  • リンブルフ語

    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • リトアニア語

    • Vytautas Motuzas <v.motuzas_at_gmail.com>
  • マレー語

    • Amir Hamzah <amir.overlord666_at_gmail.com>
    • diprofinfiniti <anonynuine-999_at_yahoo.com>
  • ネパール語

    • Nabin Ghimire <nnabinn_at_hotmail.com>
  • ノルウェー語ブークモール

    • Børge Holm-Wennberg <borge947_at_gmail.com>
    • Tor Stokkan <danorse_at_gmail.com>
    • Espen Frøyshov <efroys_at_gmail.com>
    • Kurt Eilertsen <kurt_at_kheds.com>
    • Christoffer Haugom <ph3n1x.nobody_at_gmail.com>
    • Sebastian <sebastian_at_sgundersen.com>
    • Tomas <tomas_at_tomasruud.com>
  • ペルシア語

    • ashkan shirian <ashkan.shirian_at_gmail.com>
    • HM <goodlinuxuser_at_chmail.ir>
  • ポーランド語

    • Andrzej <andrzej_at_kynu.pl>
    • Przemo <info_at_opsbielany.waw.pl>
    • Krystian Biesaga <krystian4842_at_gmail.com>
    • Maciej Gryniuk <maciejka45_at_gmail.com>
    • Michał VonFlynee <vonflynee_at_gmail.com>
  • ポルトガル語

    • Alexandre Badalo <alexandre.badalo_at_sapo.pt>
    • João Rodrigues <geral_at_jonilive.com>
    • Pedro Ribeiro <p.m42.ribeiro_at_gmail.com>
    • Sandro Amaral <sandro123iv_at_gmail.com>
  • ポルトガル語 (ブラジル)

    • Alex Rohleder <alexrohleder96_at_outlook.com>
    • bruno mendax <brunomendax_at_gmail.com>
    • Danilo GUia <danilo.eng_at_globomail.com>
    • Douglas Rafael Morais Kollar <douglas.kollar_at_pg.df.gov.br>
    • Douglas Eccker <douglaseccker_at_hotmail.com>
    • Ed Jr <edjacobjunior_at_gmail.com>
    • Guilherme Souza Silva <g.szsilva_at_gmail.com>
    • Guilherme Seibt <gui_at_webseibt.net>
    • Helder Santana <helder.bs.santana_at_gmail.com>
    • Junior Zancan <jrzancan_at_hotmail.com>
    • Luis <luis.eduardo.braschi_at_outlook.com>
    • Marcos Algeri <malgeri_at_gmail.com>
    • Marc Delisle <marc_at_infomarc.info>
    • Renato Rodrigues de Lima Júnio <renatomdd_at_yahoo.com.br>
    • Thiago Casotti <thiago.casotti_at_uol.com.br>
    • Victor Laureano <victor.laureano_at_gmail.com>
    • Vinícius Araújo <vinipitta_at_gmail.com>
    • Washington Bruno Rodrigues Cav <washingtonbruno_at_msn.com>
    • Yan Gabriel <yansilvagabriel_at_gmail.com>
  • パンジャブ語

    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • ルーマニア語

    • Alex <amihaita_at_yahoo.com>
    • Costel Cocerhan <costa1988sv_at_gmail.com>
    • Ion Adrian-Ionut <john_at_panevo.ro>
    • Raul Molnar <molnar.raul_at_wservices.eu>
    • Deleted User <noreply_at_weblate.org>
    • Stefan Murariu <stefan.murariu_at_yahoo.com>
  • ロシア語

    • Andrey Aleksanyants <aaleksanyants_at_yahoo.com>
    • <ddrmoscow_at_gmail.com>
    • Robin van der Vliet <info_at_robinvandervliet.nl>
    • Хомутов Иван Сергеевич <khomutov.ivan_at_mail.ru>
    • Alexey Rubinov <orion1979_at_yandex.ru>
    • Олег Карпов <salvadoporjc_at_gmail.com>
    • Egorov Artyom <unlucky_at_inbox.ru>
  • セルビア語

    • Smart Kid <kidsmart33_at_gmail.com>
  • シンハラ語

    • Madhura Jayaratne <madhura.cj_at_gmail.com>
  • スロバキア語

    • Martin Lacina <martin_at_whistler.sk>
    • Patrik Kollmann <parkourpotex_at_gmail.com>
    • Jozef Pistej <pistej2_at_gmail.com>
  • スロベニア語

    • Domen <mitenem_at_outlook.com>
  • スペイン語

    • Daniel Hinostroza, MD <phpmyadmin_at_cerebroperiferico.com>
    • Luis García Sevillano <floss.dev_at_gmail.com>
    • Franco <fulanodetal.github1_at_openaliasbox.org>
    • Luis Ruiz <luisan00_at_hotmail.com>
    • Macofe <macofe.languagetool_at_gmail.com>
    • Matías Bellone <matiasbellone+weblate_at_gmail.com>
    • Rodrigo A. <ra4_at_openmailbox.org>
    • FAMMA TV NOTICIAS MEDIOS DE CO <revistafammatvmusic.oficial_at_gmail.com>
    • Ronnie Simon <ronniesimonf_at_gmail.com>
  • スウェーデン語

    • Anders Jonsson <anders.jonsson_at_norsjovallen.se>
  • タミル語

    • கணேஷ் குமார் <GANESHTHEONE_at_gmail.com>
    • Achchuthan Yogarajah <achch1990_at_gmail.com>
    • Rifthy Ahmed <rifthy456_at_gmail.com>
  • タイ語

    • <nontawat39_at_gmail.com>
    • Somthanat W. <somthanat_at_gmail.com>
  • トルコ語

    • Burak Yavuz <hitowerdigit_at_hotmail.com>
  • ウクライナ語

    • Сергій Педько <nitrotoll_at_gmail.com>
    • Igor <vmta_at_yahoo.com>
    • Vitaliy Perekupka <vperekupka_at_gmail.com>
  • ベトナム語

    • Bao Phan <baophan94_at_icloud.com>
    • Xuan Hung <mr.hungdx_at_gmail.com>
    • Bao trinh minh <trinhminhbao_at_gmail.com>
  • 西フラマン語

    • Robin van der Vliet <info_at_robinvandervliet.nl>

ドキュメントの翻訳者

以下の方々が phpMyAdmin のドキュメントの翻訳に貢献してくださいました。

  • アルバニア語

    • Arben Çokaj <acokaj_at_shkoder.net>
  • アラビア語

    • Ahmed El Azzabi <ahmedtek1993_at_gmail.com>
    • Omar Essam <omar_2412_at_live.com>
  • アルメニア語

    • Andrey Aleksanyants <aaleksanyants_at_yahoo.com>
  • アゼルバイジャン語

    • Mircəlal <01youknowme_at_gmail.com>
    • Sevdimali İsa <sevdimaliisayev_at_mail.ru>
  • カタルーニャ語

    • josep constanti <jconstanti_at_yahoo.es>
    • Joan Montané <joan_at_montane.cat>
    • Xavier Navarro <xvnavarro_at_gmail.com>
  • 中国語 (中国)

    • Vincent Lau <3092849_at_qq.com>
    • 罗攀登 <6375lpd_at_gmail.com>
    • disorderman <disorderman_at_qq.com>
    • ITXiaoPang <djh1017555_at_126.com>
    • tunnel213 <tunnel213_at_aliyun.com>
    • Terry Weng <wengshiyu_at_gmail.com>
    • whh <whhlcj_at_126.com>
  • 中国語 (台湾)

    • Chien Wei Lin <cwlin0416_at_gmail.com>
    • Peter Dave Hello <xs910203_at_gmail.com>
  • チェコ語

    • Aleš Hakl <ales_at_hakl.net>
    • Michal Čihař <michal_at_cihar.com>
    • Jan Palider <palider_at_seznam.cz>
    • Petr Kateřiňák <petr.katerinak_at_gmail.com>
  • デンマーク語

    • Aputsiaĸ Niels Janussen <aj_at_isit.gl>
    • Claus Svalekjaer <just.my.smtp.server_at_gmail.com>
  • オランダ語

      1. Voogt <a.voogt_at_hccnet.nl>
    • dingo thirteen <dingo13_at_gmail.com>
    • Dries Verschuere <dries.verschuere_at_outlook.com>
    • Robin van der Vliet <info_at_robinvandervliet.nl>
    • Stefan Koolen <nast3zz_at_gmail.com>
    • Ray Borggreve <ray_at_datahuis.net>
    • Dieter Adriaenssens <ruleant_at_users.sourceforge.net>
    • Tom Hofman <tom.hofman_at_gmail.com>
  • エストニア語

    • Kristjan Räts <kristjanrats_at_gmail.com>
  • フィンランド語

    • Juha <jremes_at_outlook.com>
  • フランス語

    • Cédric Corazza <cedric.corazza_at_wanadoo.fr>
    • Étienne Gilli <etienne.gilli_at_gmail.com>
    • Marc Delisle <marc_at_infomarc.info>
    • Donavan_Martin <mart.donavan_at_hotmail.com>
  • フリジア語

    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • ガリシア語

    • Xosé Calvo <xosecalvo_at_gmail.com>
  • ドイツ語

    • Daniel <d.gnauk89_at_googlemail.com>
    • JH M <janhenrikm_at_yahoo.de>
    • Lasse Goericke <lasse_at_mydom.de>
    • Michael Koch <michael.koch_at_enough.de>
    • Ann + J.M. <phpMyAdmin_at_ZweiSteinSoft.de>
    • Niemand Jedermann <predatorix_at_web.de>
    • Phillip Rohmberger <rohmberger_at_hotmail.de>
    • Hauke Henningsen <sqrt_at_entless.org>
  • ギリシア語

    • Παναγιώτης Παπάζογλου <papaz_p_at_yahoo.com>
  • ハンガリー語

    • Balázs Úr <urbalazs_at_gmail.com>
  • イタリア語

    • Francesco Saverio Giacobazzi <francesco.giacobazzi_at_ferrania.it>
    • Marco Pozzato <ironpotts_at_gmail.com>
    • Stefano Martinelli <stefano.ste.martinelli_at_gmail.com>
    • TWS <tablettws_at_gmail.com>
  • 日本語

    • Eshin Kunishima <ek_at_luna.miko.im>
    • Hiroshi Chiyokawa <hiroshi.chiyokawa_at_gmail.com>
  • リトアニア語

    • Jur Kis <atvejis_at_gmail.com>
    • Dovydas <dovy.buz_at_gmail.com>
  • ノルウェー語ブークモール

    • Tor Stokkan <danorse_at_gmail.com>
    • Kurt Eilertsen <kurt_at_kheds.com>
  • ポルトガル語 (ブラジル)

    • Alexandre Moretti <alemoretti2010_at_hotmail.com>
    • Douglas Rafael Morais Kollar <douglas.kollar_at_pg.df.gov.br>
    • Guilherme Seibt <gui_at_webseibt.net>
    • Helder Santana <helder.bs.santana_at_gmail.com>
    • Michal Čihař <michal_at_cihar.com>
    • Michel Souza <michel.ekio_at_gmail.com>
    • Danilo Azevedo <mrdaniloazevedo_at_gmail.com>
    • Thiago Casotti <thiago.casotti_at_uol.com.br>
    • Vinícius Araújo <vinipitta_at_gmail.com>
    • Yan Gabriel <yansilvagabriel_at_gmail.com>
  • スロバキア語

    • Martin Lacina <martin_at_whistler.sk>
    • Michal Čihař <michal_at_cihar.com>
    • Jozef Pistej <pistej2_at_gmail.com>
  • スロベニア語

    • Domen <mitenem_at_outlook.com>
  • スペイン語

    • Luis García Sevillano <floss.dev_at_gmail.com>
    • Franco <fulanodetal.github1_at_openaliasbox.org>
    • Matías Bellone <matiasbellone+weblate_at_gmail.com>
    • Ronnie Simon <ronniesimonf_at_gmail.com>
  • トルコ語

    • Burak Yavuz <hitowerdigit_at_hotmail.com>

バージョン 2.1.0 当時の貢献者一覧

このソフトのベースとなったのは Peter Kuppelwieser の MySQL-Webadmin です。PHP3 を使ってウェブベースの MySQL インタフェースを作るというのは元々彼のアイデアだったのです。私も、彼のソースコードはいっさい利用していませんが、いくつかのコンセプトはお借りしました。phpMyAdmin を作ったのは、彼がもうその(偉大な)ツールの開発を続けるつもりがないと言ったからです。

以下の方々に感謝します。

  • Amalesh Kempf <ak-lsml_at_living-source.com> はテーブルやデータベースを削除するときのチェックコードを提供してくださいました。また、tbl_create.php3 に主キーを指定できるようにしたらどうかと薦めてくださったのも彼です。バージョン 1.1.1 にはバグレポートだけでなくldi_*.php3-set(テキストファイルのインポート)も提供してくださいました。小さな改善も多数いただいています。
  • Jan Legenhausen <jan_at_nrw.net> は、バージョン 1.3.0 で導入された変更点の大部分を作ってくださいました (特に重要なものとしては認証があります)。バージョン 1.4.1 ではテーブルダンプ機能を増強してくださいました。バグフィックスや援助も多数いただいています。
  • Marc Delisle <DelislMa_at_CollegeSherbrooke.qc.ca> は、文字列を別ファイルにアウトソースすることで phpMyAdmin を言語に依存しないものにしました。フランス語への翻訳にも貢献しました。
  • Alexandr Bravo <abravo_at_hq.admiral.ru> は、tbl_select.php3 を提供してくださいました。これはテーブルのいくつかのフィールドのみを表示する機能です。
  • Chris Jackson <chrisj_at_ctel.net>。tbl_change.php3 に MySQL 関数のサポートを追加してくださいました。2.0 では「定型問い合わせ」機能も追加してくださっています。
  • Dave Walton <walton_at_nordicdms.com>。複数のサーバのサポートを追加してくださいました。バグフィックスをくださる常連でもあります。
  • Gabriel Ash <ga244_at_is8.nyu.edu>。バージョン 2.0.6 のランダムアクセス機能を提供してくださいました。

細々とした修正、強化、バグフィックス、新規言語サポート等をしてくださった方々。

Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas Kleemann, Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel Piankov, Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, Jannis Hermanns, G. Wieggers.

また、提案、バグレポート、単なる感想など、私にメールをくださったすべての方々に感謝します。

用語集

フリー百科事典 Wikipedia より

.htaccess

Apache のディレクトリ単位での設定ファイルのデフォルト名。

ACL
Access Control List (アクセス制御リスト)
Blowfish

Bruce Schneier が1993年に開発したキーを持つ対称ブロック暗号。

ブラウザ

World Wide Web 上のウェブサイトでウェブページに一般的に置かれているテキスト、画像、その他の情報をユーザに対して表示や双方向通信することができるアプリケーション。

bzip2

Julian Seward 氏により開発されたフリーソフトウェアでオープンソースのデータ圧縮アルゴリズムおよびプログラム。

CGI

CGI (コモン・ゲートウェイ・インタフェース) は、クライアントのウェブブラウザが、ウェブサーバ上で実行されるプログラムからのデータを要求することができる重要な World Wide Web 技術です。

変更履歴

プロジェクトに対して行われた変更のログまたは記録。

クライアント

ネットワークなどを介して他のコンピュータ上の (リモート) サービスにアクセスするコンピュータシステムのこと。

カラム

特定の単一の型のデータ値の集まり。テーブルの各行に対しての一要素でもある。

サーバにアクセスするたびにサーバから送信され World Wide Web ブラウザから送り返される情報のひとかたまり。

CSV

カンマ区切りの値

DB
データベース を参照
データベース

組織化されたデータの集まり。

エンジン
ストレージエンジン を参照
PHP 拡張モジュール

PHP を追加機能で拡張する PHP モジュール。

FAQ

Frequently Asked Questions は、よく尋ねられる質問とその答えの一覧です。

フィールド

分割されたデータの一部分、またはカラム。

外部キー

データベースの行のカラムまたはカラムの集合の1つ。これらは、(通常は異なる) テーブル内における別のデータベースの行のキーを形成しているカラムキーまたはカラム集合キーを指している。

GD

Thomas Boutell 氏他によって開発された動的に画像を操作するためのグラフィックライブラリ。

GD2
GD を参照
GZip

GZip はGNU zip の略称で、GNU フリーソフトウェアファイル圧縮プログラムのことです。

ホスト

コンピュータネットワークに接続された任意のマシンのこと。ホスト名を持っているノード。

ホスト名

ネットワーク接続された端末のネットワーク上における一意の名前。

HTTP

HTTP (ハイパーテキスト転送プロトコル) は、 World Wide Web 上で情報を転送したり伝えたりするために使用される主な方法です。

HTTPS

セキュリティ対策を付加した HTTP 接続。

IEC
国際電気標準会議
IIS

IIS (Internet Information Services) は Microsoft Windows を使用しているサーバ用のインターネット基礎サービスのセットです。

インデックス

テーブル内の行に素早くアクセスできるようにするための機能。

IP

インターネット・プロトコル (Internet Protocol) は、パケット交換ネットワーク間でデータを通信するための、送信元と宛先のホストで使用されるデータ指向のプロトコルです。

IP アドレス

インターネット・プロトコル標準で使用される、ネットワーク上で相互に識別し通信する端末に使用される一意の番号。

IPv6

IPv6 (Internet Protocol version 6) は Internet Protocol (IP) の最新版であり、その前身の IPv4 がアドレスを使い果たしたことの長年の問題に対処するように設計されています。

ISAPI

Internet Server Application Programming Interface は Internet Information Services (IIS) の API です。

ISP

ISP (インターネット・サービス・プロバイダ) は、インターネット関連サービスへのユーザアクセスを提供している企業や組織です。

ISO

国際標準化機構

JPEG

写真画像の非可逆圧縮に使われる最も一般的で標準的な方法。

JPG
JPEG を参照
キー
インデックス を参照
LaTeX

TeX 組版プログラムのための文書準備システム。

Mac

Apple Macintosh は、 Apple Inc. が設計、開発、製造、販売しているパソコンの製品群です。

macOS

一般消費者およびプロの市場向けに現在出荷されている全ての Apple Macintosh コンピュータに含まれているオペレーティングシステム。

mbstring

PHP mbstring 機能は、マルチバイト文字セット、特に UTF-8 で表された言語の対応を提供します。

この拡張モジュールのインストールで問題が発生したときは、 1.20 mysqli や mysql 拡張モジュールがないというエラーが出ます。 に良いヒントが書かれているので参照してください。

メディア型

メディア型 (以前は MIME タイプと呼ばれていた) は 2 つの部分からなる識別子で、インターネットで転送されるファイル形式とファイルの内容を識別します。

MIME

多目的インターネットメール拡張は、電子メール書式におけるインターネット標準です。

モジュール

Apache HTTP サーバ httpd の拡張機能。

mod_proxy_fcgi

Fast CGI インタフェースを実装するための Apache モジュールです。 PHP は CGI モジュール、 FastCGI、または直接の Apache モジュールとして実行することができます。

MySQL

マルチスレッド、マルチユーザの SQL (Structured Query Language) によるデータベース管理システム (DBMS)。

MySQLi

改良された MySQL クライアントの PHP 拡張モジュール。

mysql

MySQL クライアントの PHP 拡張。

OpenDocument

オフィス文書のオープン標準の一つ。

OS X

macOS を参照。

PDF

PDF (ポータブル・ドキュメント・フォーマット) は、 Adobe Systems よって開発された装置や解像度に依存しない形式で二次元ドキュメントを表現するためのファイル形式。

PEAR

PHP 拡張モジュールとアプリケーションのリポジトリ。

PCRE

PCRE (Perl Compatible Regular Expressions) は Perl 互換の PHP 正規表現関数群です

PHP

「PHP: Hypertext Preprocessor」の略称。オープンソース。主にサーバ側のアプリケーション開発と動的なウェブコンテンツのために使用されるリフレクションプログラミング言語。最近では、ソフトウェアアプリケーションの広い範囲で使われている。

ポート

データが送受信される接続。

主キー

主キーは、テーブル内の1つ以上のフィールドに対するインデックスで、テーブル内のそれぞれの行で一意の値を持ちます。テーブル内のデータをにアクセスしたり識別したりしやすいように、すべてのテーブルに主キーを設定すべきです。テーブルに主キーを設定できるのは一つだけで、常に 主キー と呼ばれます。実際、主キーは 主キー という名前の ユニークキー にすぎません。主キーが定義されていない場合、存在すれば最初の ユニークキー を主キーとして使用します。

主キーはテーブルを作成する際に作成することができます (phpMyAdmin では、主キーの一部にしたい各フィールドの主キーチェックボックスをチェックするだけです)。

既存のテーブルには、 ALTER TABLE または CREATE INDEX で主キーを追加することができます (phpMyAdmin では、テーブルの構造ページのフィールド一覧の下にある「インデックスの追加」をクリックするだけです)。

RFC

RFC (Request for Comments) は、インターネット技術に適用される新しい研究、技術革新、方法論を書き連ねた文書です。

RFC 1952

GZIP ファイル形式仕様書 4.3 版

参考

RFC 1952

行 (レコード、組)

テーブル内において単一の、暗黙的に構造化されたデータ項目を表します。

サーバ

ネットワークを介して他のコンピュータシステムにサービスを提供するコンピュータシステムのこと。

Sodium

Sodium の PHP 拡張。

ストレージエンジン

MySQL は、ディスク上のデータを保存するためにいくつかの異なる形式を使用することができますが、これらはストレージエンジンやテーブル種別と呼ばれています。 phpMyAdmin では、操作タブからユーザーが特定のテーブルのストレージエンジンを変更することができます。

一般的なテーブル種別は InnoDB と MyISAM ですが、その他にも多くのテーブル種別が存在しており、状況によってはそれが望ましい場合もあります。

ソケット

プロセス間通信の一形式。

SSL

SSL (TLS に置き換えられました) は、インターネット上の安全な通信を提供する暗号プロトコルです。

ストアドプロシージャ

リレーショナルデータベースシステムにアクセスするアプリケーションで使用可能なサブルーチン

SQL

構造化問い合わせ言語

テーブル

テーブル (表) は、水平方向の行と垂直方向のカラム (列) で構成、定義、保存されているデータ要素 (セル) の組み合わせです。各項目は、ラベルかキーによって、もしくは他の項目との関係における位置によって、一意に識別することができます。

tar

アーカイブファイル形式の一種で Tape ARchive の略。

TCP

TCP (Transmission Control Protocol) は、インターネット・プロトコル群の中核となるプロトコルの一つ。

TCPDF

PDF ファイルを生成するための PHP ライブラリ。

トリガ

データベース内の特定のテーブルまたはビュー上の特定のイベントに応答して自動的に実行される手続き型のコード

ユニークキー
ユニークキーとは、テーブル内の1つ以上のフィールドに対するインデックスで、各行に対して一意の値を持ちます。 最初のユニークキーは、主キー が定義されていない場合は 主キー として扱われます。
URL

URL (Uniform Resource Locator) は文字の並びで、標準化された形式に準拠しており、インターネット上の文書や画像などを場所で参照するために使用されます。

ウェブサーバ

クライアントからの HTTP リクエストの受け入れおよびそれらに対するウェブページの提供を行うコンピュータ (プログラム)。

XML

個別の目的に応じたマークアップ言語作成のための、W3C 勧告の汎用マークアップ言語。多くの異なる種類のデータを記述することが可能。

ZIP

有名なデータ圧縮とアーカイブの形式。

Zlib

Jean-loup GaillyMark Adler 両氏によるオープンソースでクロスプラットフォームのデータ圧縮ライブラリ。

コンテンツセキュリティポリシー

HTTP の Content-Security-Policy レスポンスヘッダにより、ウェブサイトの管理者が特定のページから読み込むことができるリソースを制御することができます。

インデックスとテーブル