Top  -  必要なもの  -  はじめに  -  インストール  -  設定
変換機能  -  FAQ  -  開発者  -  著作権表示  -  翻訳者  -  この文書の翻訳者

phpMyAdmin 2.7.0-pl2 ドキュメント


必要なもの


はじめに

phpMyAdmin は MySQL サーバを丸ごと管理できます(スーパーユーザが必要です)。また、単一のデータベースも管理できます。後者の場合は MySQL ユーザを適切にセットアップしてお望みのデータベースのみを読み書きできるようにする必要があるのですが、これはみなさんの方で MySQL マニュアルの適切な箇所をご覧ください。
phpMyAdmin は現在次のことができます:

(*)  phpMyAdmin は、Zlib(--with-zlib)/Bzip2(--with-bz2)をサポートした PHP4(≧ 4.0.4)を利用すると、ダンプや CSV エクスポートを(Zip、GZip -RFC 1952-、Bzip2 形式)で圧縮できます。


インストール

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

Mac ユーザ向けの警告:OS X より前のバージョンの MacOS を使うと、解凍の際に StuffIt が Mac 形式にしてしまうため、サーバにアップロードする前に BBEdit で「すべての」phpMyAdmin スクリプトを Unix 風にセーブしなおさなければならなくなります。PHP はどうも Mac 風の改行文字(「\r」)を好まないようなのです。

クイックインストール

  1. ウェブサーバのドキュメントルートで tar -xzvf phpMyAdmin_x.x.x.tar.gz を実行して配布ファイルを解凍します(サブディレクトリを展開するように解凍してください)。ドキュメントルートに直接アクセスできない場合は、ローカルマシンのディレクトリにファイルを解凍します。ステップ 3 まで済んだらそのディレクトリを FTP などでウェブサーバに転送してください。
  2. かならずすべてのスクリプトのオーナーを適切に設定してください(PHP がセーフモードになっている場合、スクリプトによってオーナーが異なると問題を起こすことになります)。設定例については FAQ 4.2 をご覧ください。
  3. お好きなエディタで config.inc.php ファイルを作成し、ホスト、ユーザ、パスワード、認証モードの値をお使いの環境にあわせて記入します。これらのフィールドの定義の仕方については config.default.php をご覧ください。ここで言う「ホスト」は MySQL サーバのことです。「設定」セクションにはすべての値が説明されています。また、認証モードとリンクテーブル構造の情報については引き続きこの「インストール」セクションをご覧ください。
  4. config認証タイプを利用する場合は phpMyAdmin をインストールしたディレクトリを、たとえば .htaccess ファイルの HTTP–AUTH で保護することをおすすめします。詳しくはこの FAQ のマルチユーザの項、特に FAQ 4.4 をご覧ください。
  5. ブラウザで<お使いのホスト>/<インストールしたディレクトリ>/index.php を開きます。phpMyAdmin の入口ページとお使いのデータベース(HTTP/クッキー認証モードを使う場合はログインダイアログ)が表示されるはずです。

リンクテーブル構造

一連の新機能(ブックマーク、コメント、SQL 履歴、PDF 生成、フィールド内容の変換等)を使うには専用のテーブル群を作成する必要があります。これらのテーブル群はお使いのデータベースに格納することもできますし、マルチユーザの場合はセントラルデータベースに格納することもできます(このセントラルデータベースは管理ユーザがアクセスするものです。ほかのユーザはアクセスできないようにしてください)。

scripts/ ディレクトリを確認してください。create_tables.sql というファイルがあるはずです(Windows サーバをお使いの場合は FAQ 1.23 をよくお読みください)。

MySQL サーバのバージョンが 4.1.2 以降の場合、新規インストールの際には create_tables_mysql_4_1_2+.sql をお使いください。

既存のテーブル構造を MySQL 4.1.2 以降にアップグレードする場合は upgrade_tables_mysql_4_1_2+.sql をお使いください。

phpMyAdmin を使ってテーブル群を作成することもできますが、ご注意ください。データベースやテーブルを作成する際には特別な(管理者の)権限が必要になるかもしれません。また、データベース名によってはスクリプトに多少の修正を加える必要があるかもしれません。

create_tables.sql ファイルをインポートしたら、config.inc.php ファイルでテーブル名を指定してください。このとき使うディレクティブの説明は「設定」セクションにあります。また、これらのテーブル群に対する適切なアクセス権を持った管理ユーザが必要になります(後述の認証モードの使い方をご覧ください)。

旧版からのアップグレード

それまで使っていた config.inc.php を新しいインストール先にコピーしていただくだけで結構です。アップグレード前の phpMyAdmin が 2.3.0 以前のバージョンの場合はいくつかの修正が必要になるかもしれません。これらの古い設定ファイルは 2.7.0 からサポートされなくなりました。

認証モードの使い方

「http」認証モード

「クッキー」認証モード

「config」認証モード


設定

Mac ユーザ向けの警告: PHP は Mac の改行文字(「\r」)を好まないようです。かならずテキストエディタで UNIX/Linux の改行文字(「\n」)を使えるようにするオプションを選択してから修正したスクリプトを保存してください。

設定にあたっての注意: 設定可能なデータはほとんどが config.inc.php にあります。このファイルが存在しない場合はクイックインストールの項を参照して作成しておいてください。このファイルには config.default.php で定義されているデフォルト値を変更したいパラメータのみ含めておけば結構です。

(色など)デザイン関係のパラメータは themes/<テーマ名>/layout.inc.php にあります。また、config.footer.inc.phpconfig.header.inc.php を修正すれば各ページの先頭と末尾にページ固有のコードを追加できます。

$cfg['PmaAbsoluteUri'] string
お使いの phpMyAdmin をインストールしたディレクトリへの完全な URL を(フルパスで)指定します。
(例) http://www.your_web.net/path_to_your_phpMyAdmin_directory/ なお、ウェブサーバによってはこの URL の大文字小文字を区別します。末尾のスラッシュを忘れないようにしてください。

バージョン2.3.0からはここを空欄にすることが推奨されています。たいていの場合、phpMyAdminは自動的に適切な設定を検出します。ポート転送をしているユーザはPmaAbsoluteUriを設定する必要があるでしょう(解説)。 試しに、テーブルを表示して、列を編集して保存してみてください。phpMyAdmin が正しい値を自動検出できていない場合はエラーメッセージが表示されるはずです。この値を設定してくださいというエラーが出る、あるいは自動検出コードがパスの検出に失敗する場合は、開発陣がコードを改善できるよう、バグレポートをバグトラッカーにお送りください。
$cfg['PmaNoRelation_DisableWarning'] boolean
バージョン 2.3.0 以降、マスタ/外部テーブルを操作する機能が多数提供されています(→ $cfg['Servers'][$i]['pmadb'])。
そのマスタ/外部データベースをセットアップしてみてもうまくいかない場合、その機能を利用したいデータベースの「構造(Structure)」ページを見れば、無効になっている理由を分析するリンクが見つかるはずです。
そういった機能を使いたくない場合は、この変数を TRUE に設定しておけばメッセージが表示されなくなります。
$cfg['blowfish_secret'] string
バージョン 2.5.2 以降、「クッキー」認証タイプは blowfish アルゴリズムを使ってパスワードを暗号化します。
「クッキー」認証タイプを利用する場合は、ここにお好みのランダムなパスフレーズを入力してください。このパスフレーズは blowfish アルゴリズムが内部的に利用するものです。ユーザがパスフレーズを入力するよう求められることはありません。このパラメータの最大文字数は46文字のようです。
$cfg['Servers'] array
バージョン 1.4.2 以降、phpMyAdmin は複数の MySQL サーバを管理できるようになっています。そのために追加されたのが $cfg['Servers'] 配列です。ここにはさまざまなサーバへのログイン情報が格納されます。たとえば、最初の $cfg['Servers'][$i]['host'] には最初のサーバのホスト名が、二番目の $cfg['Servers'][$i]['host'] には二番目のサーバのホスト名が入ります。config.default.php にはひとつしかサーバ定義がありませんが、必要があれば config.inc.php にいくつでも定義を追加できます。config.default.php から該当ブロックを丸ごと、あるいは必要な部分のみコピーしてください(すべての設定を定義する必要はありません。必要な部分のみ変更してください)。
$cfg['Servers'][$i]['host'] string
$i 番目の MySQL サーバのホスト名ないし IP アドレスが入ります。(例)localhost
$cfg['Servers'][$i]['port'] string
$i 番目の MySQL サーバのポート番号が入ります。デフォルトは 3306 です(空欄にしておいてください)。ホスト名を「localhost」にすると、MySQL はポート番号を無視してソケット接続しますので、デフォルトとは別のポートで接続したい場合は $cfg['Servers'][$i]['host'] に「127.0.0.1」か、本当のホスト名を入れてください。
$cfg['Servers'][$i]['socket'] string
利用するソケットへのパスが入ります。空欄にするとデフォルトのソケットが使われます。
$cfg['Servers'][$i]['connect_type'] string
MySQL サーバで利用する接続タイプが入ります。選択肢は「socket」「tcp」です。デフォルトが「tcp」になっているのは、どんな MySQL サーバでもほぼ確実に利用できるためです。ソケットの方はプラットフォームによってはサポートされていません。

ソケットモードを利用する場合、MySQL サーバはウェブサーバと同じ機械上になければなりません。
$cfg['Servers'][$i]['extension'] string
接続に利用する php MySQL エクステンション が入ります。有効な選択肢は次の通りです。

mysql :  古典的な MySQL エクステンションです。現時点ではおすすめできるデフォルトの方法です。

mysqli :  MySQL エクステンションの改良版です。このエクステンションは php 5.0.0 で利用できるようになりました。MySQL 4.1.x が走っているサーバに接続する場合はおすすめです。
注記:phpMyAdmin の MySQL 4.1 サポートは実験段階です!
$cfg['Servers'][$i]['compress'] boolean
MySQL サーバとの接続に圧縮プロトコルを使うかどうかが入ります(実験段階です)。
この機能には PHP ≧ 4.3.0 が必要です。

$cfg['Servers'][$i]['controluser'] string
$cfg['Servers'][$i]['controlpass'] string
注記:phpMyAdmin 2.6.1 以降、管理ユーザを設定しないと HTTP/クッキー認証が有効にならないのは 4.1.2 より古い MySQL サーバにのみ適用される話となりました。

この特別なアカウントはふたつの異なった目的で使われます。リレーション機能全般を利用できるようにするのと(→ $cfg['Servers'][$i]['pmadb'])、4.1.2 より古い MySQL サーバでマルチユーザインストールを可能にするためです(http/クッキー認証モード)。

HTTP/クッキー認証モード(あるいは、phpMyAdmin 2.2.1 以降の「config」認証モード)を使う場合、mysql.user(「Password」以外の全カラム)mysql.db(全カラム)mysql.tables_priv(「Grantor」、「Timestamp」以外の全カラム) テーブルに SELECT 特権を持つ MySQL アカウントの情報を提供する必要があります。このアカウントはログイン時にどのデータベースを表示するかチェックするのに利用されます。
詳細はインストールセクションの「認証モードの使い方」をご覧ください。

なお、この「管理ユーザ」で phpMyAdmin にログインしようとすると、「管理ユーザ」に与えた特権によってはエラーが出ることがあります。phpMyAdmin では「管理ユーザ」のダイレクトログインはサポートしていません。

2.2.5 より前の phpMyAdmin では「stduser/stdpass」という名前でした。
$cfg['Servers'][$i]['auth_type'] string ['http'|'cookie'|'config']
そのサーバで利用する認証方法が入ります(config/cookie/http)。
詳細はインストールセクションの「認証モードの使い方」をご覧ください。

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

$cfg['Servers'][$i]['only_db'] string または array
データベース名(の配列)を設定すると、ユーザにはそのデータベースしか見えなくなります。phpMyAdmin 2.2.1 以降、このデータベース名には MySQL のワイルドカード文字(「_」と「%」)を含められます。ワイルドカード文字をリテラルとして使う場合はエスケープしてください('my_db' ではなく、 'my\_db' のようにします)。
この設定はサーバの負荷を下げるのに効果的です。利用できるデータベースのリストを作成する際に MySQL にリクエストを送る必要がなくなるためです。ただし、これは MySQL データベースサーバの特権を差し替えるものではありません。つまり、設定すればそのデータベースだけが表示されるようになりますが、ほかのすべてのデータベースが使えなくなるわけではないのです。

複数のデータベースを利用する場合はこのようにします: $cfg['Servers'][$i]['only_db'] = array('db1', 'db2');

phpMyAdmin 2.5.5 では、左フレームのデータベースの並び順を決める際に、配列のなかでの並び順を利用するようになったため、データベースの配置を個別に指定できるようになりました。
いくつかのデータベースがトップにあれば、あとはかまわないということであれば、残りのデータベースを指定する必要はありません。次のようにしてください:$cfg['Servers'][$i]['only_db'] = array('db3', 'db4', '*'); phpMyAdmin は db3 と db4 をトップに置いて、残りをアルファベット順に並べます。
$cfg['Servers'][$i]['verbose'] boolean
複数のサーバエントリがあるなら便利です。設定しておくと、メインページのプルダウンメニューに、ホスト名ではなく、この文字列が表示されます。たとえば、システム上のいくつかのデータベースのみ表示させる場合には便利でしょう。

$cfg['Servers'][$i]['pmadb'] string
リンクテーブル構造を格納するデータベース名が入ります。

この文書のリンクテーブル構造のセクションをご覧ください。このテーブル構造の利点や、データベースの簡単な作成法、必要なテーブルが書かれています。

インストールした phpMyAdmin のユーザがひとりの場合は、お使いのデータベースに専用のテーブル群を格納することもできます。その場合は $cfg['Servers'][$i]['pmadb'] にはお使いのデータベース名を入れていただければ結構です。マルチユーザの場合はリンクテーブル構造を格納するセントラルデータベース名を設定します。

$cfg['Servers'][$i]['bookmarktable'] string
リリース 2.2.0 以降の phpMyAdmin ではブックマーククエリを利用できます。よく利用するクエリがある場合は便利です。

この機能を有効にするには、

$cfg['Servers'][$i]['relation'] string
リリース 2.2.4 以降、専用の「リレーション」テーブルにどのフィールドが別のテーブルのキー(外部キー)になっているか記述することができるようになりました。phpMyAdmin は現在この機能を次のような用途で使っています。
キーは数値でも文字でも可です。

この機能を利用できるようにするには、
注意してください。現在のバージョンでは、master_dbforeign_db と一致しなければなりません。これらのフィールドは将来クロスデータベースリレーションを開発するために用意されています。

$cfg['Servers'][$i]['table_info'] string
リリース 2.3.0 以降、対応するキーにカーソルを動かしたときどのフィールドをツールチップとして表示するか、専用の「table_info」テーブルに記述できるようになりました。
この変数はその専用のテーブル名を保持します。 この機能を利用できるようにするには、
使い方のコツ:表示するフィールド

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

また、「リレーション」機能を使っていなければなりません。

この機能を利用するには、
使い方のコツ:PDF 出力

$cfg['Servers'][$i]['column_info'] string
リリース 2.3.0 以降、テーブルごとに各コラムの説明を保管できるようになりました。このコメントは「印刷用表示」の際に表示されます。

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

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

この機能を利用できるようにするには、

$cfg['Servers'][$i]['history'] string
リリース 2.5.0 以降、SQL の履歴(phpMyAdmin インタフェースに手入力したすべてのクエリ)を保管できるようになりました。テーブルベースの履歴は利用したくない場合、JavaScriptベースの履歴を利用することもできます。この場合、ウインドウを閉じるとすべての履歴が削除されます。

$cfg['QueryHistoryMax'] を使うと保持しておきたい履歴アイテムの数を指定できます。このリストはログインのたびに上限値にまで切り詰められます。

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

この機能を利用できるようにするには、
$cfg['Servers'][$i]['verbose_check'] string
リリース 2.5.0 では新しい MIME 変換機能をサポートするようになったため、column_info テーブルに新しいフィールドが 3 つ追加されました。この変数を TRUE(デフォルト)にセットしておくと、最新のテーブル構造が利用できるようになっているかチェックします。利用できない場合はスーパーユーザに警告を発します。

このチェック機能はこの変数を false にすることで無効にできます。無効にするとパフォーマンスが向上します。

確実にテーブル構造が最新になっているときは FALSE にするのがおすすめです。
$cfg['Servers'][$i]['AllowRoot'] boolean
ルートのアクセスを許可するかどうか。これは下記の規則を簡略化しただけのものです。

$cfg['Servers'][$i]['AllowDeny']['order'] string
規則の適用順が空の場合、IP 認証は無効になります。

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

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

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

$cfg['Servers'][$i]['AllowDeny']['rules'] string の array
この規則の一般的なフォーマットは次の通りです。
      <'allow' | 'deny'> <username> [from] <ipmask>

すべてのユーザに一致させたいのであれば、username フィールドにワイルドカードとして '%' を入れることもできます。
また、ipmask フィールドでもいくつかショートカットが利用できます(ご注意ください。SERVER_ADDRESSの部分はどんなサーバでも利用できるとは限りません):

     'all' -> 0.0.0.0/0
     'localhost' -> 127.0.0.1/8
     'localhostA' -> SERVER_ADDRESS/8
     'localhostB' -> SERVER_ADDRESS/16
     'localhostC' -> 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 アドレスの一部範囲指定)
$cfg['ServerDefault'] integer
複数のサーバが設定されている場合、$cfg['ServerDefault'] にサーバ番号を設定しておくと phpMyAdmin を立ち上げたときに自動的にそのサーバに接続するようにできます。0 にセットするとログインしないでサーバのリストを表示します。
サーバがひとつしか設定されていない場合、$cfg['ServerDefault'] はそのサーバに設定「しなければなりません」。
$cfg['OBGzip'] string/boolean
HTTP 転送のスピードアップのために GZip 出力バッファリングを利用するかどうかを定義します。
true/false にセットすると有効/無効になります。(文字列で)「auto」にすると、phpMyAdmin は出力バッファリングを有効にしようとしますが、ブラウザの方で何かバッファリングに問題が出た場合は自動的に無効にします。IE6 に特定のパッチをあてると、バッファリングを有効にしたときにデータが壊れる問題があることがわかっています。
$cfg['PersistentConnections'] boolean
持続的接続を利用するかどうか(mysql_connect するか mysql_pconnect するか)。
$cfg['ForceSSL'] boolean
phpMyAdmin にアクセスするときに https を強制するかどうか。
$cfg['ExecTimeLimit'] integer [秒数]
スクリプトが実行していられる秒数を指定します。秒数を 0 にすると時間制限はなくなります。
この設定はダンプファイルのインポート/エクスポートをする際に利用されますが、PHP がセーフモードになっているときは効果がありません。
$cfg['SkipLockedTables'] boolean
利用しているテーブルに印をつけることで、テーブルがロックされているデータベースを表示できるようにします(3.23.30 以降)。
$cfg['ShowSQL'] boolean
phpMyAdmin が生成する SQL クエリを表示するかどうかを定義します。
$cfg['AllowUserDropDatabase'] boolean
通常ユーザ(administrator 以外のユーザ)に自分自身のデータベースの削除を許可するかどうかを定義します。FALSE にすると、「データベースを削除(Drop Database)」のリンクは表示されませんし、「DROP DATABASE mydatabase」すらも拒否されます。多くの顧客をかかえる ISP にとってはきわめて実用的です。
$cfg['Confirm'] boolean
データが消失しそうな操作をしたときに警告(「本当に〜してもよいですか」)を表示するかどうか。
$cfg['LoginCookieRecall'] boolean
クッキー認証モードの場合に、前回ログインしたときの状態に戻すかどうかを定義します。
$cfg['UseDbSearch'] boolean
「データベース内の検索」を有効にするかどうかを定義します。
$cfg['IgnoreMultiSubmitErrors'] boolean
複数のクエリを含む文のクエリのひとつが失敗したときに処理を続けるかどうかを定義します。デフォルトでは処理を中止します。
$cfg['VerboseMultiSubmit'] boolean
複数のクエリを含む文のそれぞれのクエリの結果を SQL 出力のなかにインラインコメントとして埋め込むかどうかを定義します。デフォルトは TRUE です。

$cfg['AllowArbitraryServer'] boolean
有効にすると、クッキー認証を利用して任意のサーバにログインできます。

注意: この機能は慎重にご利用ください。http サーバが置かれているファイアウォールの外にある MySQL サーバにアクセスできてしまうことがあります。

$cfg['LeftFrameLight'] boolean
select ベースのメニューを利用して現在利用できるテーブルのみを左フレーム(小さい方のページ)に表示するかどうかを定義します。$cfg['LeftFrameTableSeparator'] を利用したフォルダのネスト表示はライトモードではない場合のみ利用できます。
$cfg['LeftFrameDBTree'] boolean
ライトモードのときに(セレクターの)データベース名をツリー表示するかどうかを定義します。$cfg['LeftFrameDBSeparator']もご覧ください。
$cfg['LeftFrameDBSeparator'] string
データベース名をツリー表示するときに利用する区切り文字列を定義します。
$cfg['LeftFrameTableSeparator'] string
テーブルをネスト表示するときの区切りとなる文字列を定義します。デフォルトは「__」です。つまり、「first__second__third」のようなテーブルがあったら、first > second > third のように三階層あるものとして表示されます。FALSE を指定するか、空欄になっている場合は、この機能は無効になります。注意:この区切り文字をテーブル名の先頭ないし末尾にしたり、間にほかの文字を含めずに複数連続させてはなりません。
$cfg['LeftFrameTableLevel'] string
テーブルを上記の区切り文字で分割表示する際に何層まで表示するかを定義します。
$cfg['ShowTooltip'] boolean
テーブルのコメントをツールチップとして左フレームに表示するかどうかを定義します。
$cfg['ShowTooltipAliasDB'] boolean
ツールチップが有効でデータベースのコメントが設定されている場合、コメントと本当の名前を反転させます。つまり、「user0001」というテーブルに「MyName」というコメントを追加した場合、左フレームには「MyName」という名前が表示され、ツールチップにはデータベースの本当の名前が表示されます。
$cfg['ShowTooltipAliasTB'] boolean/string
$cfg['ShowTooltipAliasDB'] と同じですが、こちらはテーブル名を反転させます。「nested」に設定すると、テーブルの別名は $cfg['LeftFrameTableSeparator'] ディレクティブによってテーブルを分割/ネストするときにしか使われません。そのため、フォルダの方は別名に応じた名前になりますが、テーブル名そのものは本当のテーブル名のままになります。

$cfg['LeftDisplayLogo'] boolean
phpMyAdmin ロゴを左フレームの最上部に表示するかどうかを定義します。デフォルトは TRUE です。
$cfg['LeftDisplayServers'] boolean
サーバの選択肢を左フレームの最上部に表示するかどうかを定義します。デフォルトは FALSE です。
$cfg['DisplayServersList'] boolean
そのサーバの選択肢をドロップダウンではなくリンクとして表示するかどうかを定義します。デフォルトは FALSE(ドロップダウン)です。
$cfg['ShowStats'] boolean
データベースやテーブルの使用量などの統計情報を表示するかどうかを定義します。
ただし、統計情報を表示するには少なくとも MySQL 3.23.3 が必要です。また、現時点の MySQL は Berkeley DB テーブル向けの情報などは返しません。
$cfg['ShowPhpInfo'] boolean
$cfg['ShowChgPassword'] boolean
一般ユーザの場合に、立ち上げ時のメイン(右)フレームに「PHP 情報」、「パスワードの変更」リンクを表示するかどうかを定義します。この設定では直接入力された MySQL コマンドをチェックしません。

ご注意ください。スクリプト中で phpinfo() を使えなくするには php.iniに下記の行を含める必要があります。
    disable_functions = phpinfo()

また、「パスワードの変更」リンクは「config」認証モードでは無効になります。設定ファイルにハードコードされたパスワードの値はエンドユーザが書き換えられないためです。
$cfg['SuggestDBName'] boolean
「データベースの作成(Create Database)」フォームでデータベース名を提案するかテキストフィールドを空欄にしておくかを定義します。
$cfg['ShowBlob'] boolean
テーブルの内容を表示するときに BLOB フィールドの内容も表示するかどうかを定義します。
$cfg['NavigationBarIconic'] string
ナビゲーションバーのボタンと、右パネルのトップメニューにテキストを含めるか、シンボルのみにするかを定義します。値が TRUE のときはアイコンを、FALSE のときはテキストを、'both' のときはアイコンとテキストの双方を表示します。
$cfg['ShowAll'] boolean
表示モードで「すべて(のレコード)を表示する」ボタンを表示するかどうかを定義します。
$cfg['MaxRows'] integer
結果セットの表示行数。結果セットの行数の方が多い場合は「前(Previous)/次(Next)」のリンクが表示されます。
$cfg['Order'] string [DESC|ASC|SMART]
デフォルトではフィールドを昇順(ASC)で表示するか、降順(DESC)で表示するか、「スマートな」順番(SMART)――つまり、TIME、DATE、DATETIME、TIMESTAMP の場合は降順、それ以外は昇順――で表示するかを定義します。
$cfg['ProtectBinary'] boolean または string
テーブルの内容を表示しているときに BLOB フィールドや BINARY フィールドを保護して修正できないようにするかどうかを定義します。 有効な値は次の通りです:
$cfg['ShowFunctionFields'] boolean
修正/挿入モードで MySQL 関数フィールドを表示するかどうかを定義します。
$cfg['CharEditing'] string
CHAR フィールドと VARCHAR フィールドでどちらの編集用コントロールを利用するか定義します。可能な値は次の通りです: デフォルトは昔ながらの input です。
$cfg['InsertRows'] integer
挿入ページに一度に表示できるエントリの最大値を定義します。
$cfg['ForeignKeyMaxLimit'] integer
外部キーに指定された項目がこの値より少ない場合は、$cfg['ForeignKeyDropdownOrder'] の設定にあわせたスタイルで外部キーのドロップダウンボックスが表示されます。
$cfg['ForeignKeyDropdownOrder'] array
外部キーのドロップダウンフィールドには、いくつかの表示方法がありますが、キーと値データの双方が表示されます。この配列には次の文字列のいずれか、または双方が入ります: 'content-id''id-content'
$cfg['ZipDump'] boolean
$cfg['GZipDump'] boolean
$cfg['BZipDump'] boolean
ダンプファイルを作成するときに zip/GZip/BZip2 圧縮を利用できるようにするかどうかを定義します。

$cfg['CompressOnFly'] boolean
GZip/BZip2 でエクスポートを圧縮する際、オン・ザ・フライ(実行中)圧縮を許可するかどうかを定義します。比較的小さなダンプの場合は関係ありませんが、許可すると、圧縮しない限り php のメモリ制限にひっかかるような大きなダンプも作成できるようになります。こうして生成したファイルはオン・ザ・フライ圧縮をしなかったときより GZip/BZip2 ヘッダの数が多くなりますが、まともなプログラムならどれでも正しく処理してくれます。
$cfg['LightTabs'] string
True にすると、メインフレーム上部のタブをグラフィックの少ないものにします。
$cfg['PropertiesIconic'] string
True にすると、データベースやテーブルのプロパティリンクに(「表示」、「選択」、「挿入」といった)テキストではなくアイコンを表示します。
「both」にすると、アイコン「と」テキストを表示します。
False にすると、テキストのみを表示します。
$cfg['PropertiesNumColumns'] integer
データベースのプロパティを表示する際に何カラム分のテーブルを表示するか。デフォルトは 1 です。1 より大きい値に設定した場合、表示領域を広げるためデータベースのタイプは表示されなくなります。
$cfg['DefaultTabServer'] string
サーバ表示の際にデフォルトで表示されるタブを定義します。可能な値は次の通りです:「main.php」(マルチユーザ環境におすすめ)、「server_databases.php」、「server_status.php」、「server_variables.php」、「server_privileges.php」、「server_processlist.php」
$cfg['DefaultTabDatabase'] string
データベース表示の際にデフォルトで表示されるタブを定義します。可能な値は次の通りです:「db_details_structure.php」、「db_details.php」、「db_search.php」
$cfg['DefaultTabTable'] string
テーブル表示の際にデフォルトで表示されるタブを定義します。可能な値は次の通りです:「tbl_properties_structure.php」、「tbl_properties.php」、「tbl_select.php」、「tbl_change.php」
$cfg['MySQLManualBase'] string
MySQL 文書の URI を設定すると(文書のタイプは $cfg['MySQLManualType'] の値によります)、適切なヘルプ用のリンクが生成されます。
MySQL マニュアルとそのタイプの詳細については MySQL ドキュメントのページ をご覧ください。
$cfg['MySQLManualType'] string
MySQL 文書のタイプです:
$cfg['DefaultLang'] string
ブラウザもユーザも言語を定義していないときに利用するデフォルトの言語を定義します。
有効な値については select_lang.lib.php スクリプトをご覧ください。
$cfg['Lang'] string
言語の設定を強制して、常にこの言語を使うようにします(ただし、select_lang.lib.php スクリプトで定義されている言語でなければなりません)。
$cfg['FilterLanguages'] string
利用可能な言語の一覧を与えられた正規表現にマッチするものに限定します。たとえば、チェコ語と英語のみに限定したければ、フィルターを '^(cs|en)' のように設定します。
$cfg['DefaultCharset'] string
MySQL クエリを記録する際に利用するデフォルトの文字セット。$cfg['AllowAnywhereRecoding'] オプションが有効になっている必要があります。
$cfg['AvailableCharsets'] 配列内の文字セットであればどれを記入しても結構です。また、これはデフォルト値でしかありません。ユーザは自由に文字セットを選択できます。
$cfg['AllowAnywhereRecoding'] boolean
MySQL クエリの文字セットの変換を許可します。MySQL のクエリの文字コードを変換するには、PHP が(コンパイルの際に組み込まれているか、モジュールを利用することで)recode や iconv をサポートしている必要があります。また、利用する言語ファイルの方でも変換が有効になっている必要があります(デフォルトでは Unicode で記述されている言語ファイルのみ有効です。これは文字の脱落を防ぐためです)。

これを TRUE に設定すると、エクスポートページにもファイルをエクスポートするときの文字セットを選択できるプルダウンメニューが表示されるようになります。
$cfg['RecodingEngine'] string
文字セットの変換にどの関数を利用するかを選択できます。 可能な値は次の通りです:
デフォルトは auto です。
$cfg['IconvExtraParams'] string
文字セット変換で利用する iconv 向けのパラメータを指定します。詳しくは iconv のドキュメント をご覧ください。
$cfg['AvailableCharsets'] array
MySQL 変換で利用できる文字セットです。(recode/iconv がサポートしているものを)自分で追加したり、使わないものを削除したりもできます。文字セットはこのリストと同じ順番で表示されますので、頻繁に使うものは先頭に移してください。
$cfg['GD2Available'] string
GD ≧ 2 が利用できるかどうかを指定します。利用できる場合、MIME 変換の際に活用できます。
可能な値は次の通りです:
デフォルトは auto です。
$cfg['LeftWidth'] integer
左フレームの幅をピクセルで指定します。themes/themename/layout.inc.php をご覧ください。
$cfg['LeftBgColor'] string [HTML の色指定]
$cfg['RightBgColor'] string [HTML の色指定]
左右のフレームの背景色(HTML)。themes/themename/layout.inc.php をご覧ください。
$cfg['RightBgImage'] string
右フレームの背景画像の URI。絶対 URI でなければなりません。themes/themename/layout.inc.php をご覧ください。
$cfg['LeftPointerColor'] string [HTML の色指定]
左フレームのポインタの色(HTML。Netscape 4 では動作しません)。themes/themename/layout.inc.php をご覧ください。
$cfg['LeftPointerEnable'] boolean
TRUE の場合は左のポインタを有効にします(LeftFrameLight が FALSE の場合)。
$cfg['Border'] integer
テーブルの幅のサイズ。themes/themename/layout.inc.php をご覧ください。
$cfg['ThBgcolor'] string [HTML の色指定]
テーブルのヘッダに使われる色(HTML)。themes/themename/layout.inc.php をご覧ください。
$cfg['BgcolorOne'] string [HTML の色指定]
テーブルの奇数行に使われる色(HTML)。themes/themename/layout.inc.php をご覧ください。
$cfg['BgcolorTwo'] string [HTML の色指定]
テーブルの偶数行に使われる色(HTML)。themes/themename/layout.inc.php をご覧ください。
$cfg['BrowsePointerColor'] string [HTML の色指定]
$cfg['BrowseMarkerColor'] string [HTML の色指定]
表示モードのポインタとマーカの色(HTML。Netscape 4 では動作しません)。
前者はマウスが重なった行を強調表示するためのもの、後者はクリックした行に視覚的なマークを付けたり消したりできるようにするためのものです。
themes/themename/layout.inc.php をご覧ください。
$cfg['BrowsePointerEnable'] boolean
表示ポインタを有効にするかどうか。
$cfg['BrowseMarkerEnable'] boolean
表示マーカを有効にするかどうか。
$cfg['TextareaCols'] integer
$cfg['TextareaRows'] integer
$cfg['CharTextareaCols'] integer
$cfg['CharTextareaRows'] integer
textarea の行・列数。
この値は SQL クエリの textarea の場合は 2 倍に、クエリウインドウ内の SQL 用 textarea の場合は 1.25 倍になります。
Char のついた値は CHAR と VARCHAR を修正する際に使われます($cfg['CharEditing'] でそのように設定されている場合)。
$cfg['LongtextDoubleTextarea'] boolean
LONGTEXT フィールドの textarea のサイズを倍にするかどうかを定義します。
$cfg['TextareaAutoSelect'] boolean
クリックしたときにクエリボックスの textarea 全体を選択するかどうかを定義します。


$cfg['CtrlArrowsMoving'] boolean
修正時に Ctrl+カーソルキー(Safariの場合は Option+カーソルキー)でフィールド間を移動できるようにするかどうか。
$cfg['LimitChars'] integer
表示ページで、数字以外のフィールドに表示する最大文字数。表示ページ内のトグルボタンでオフにすることもできます。
$cfg['ModifyDeleteAtLeft'] boolean
$cfg['ModifyDeleteAtRight'] boolean
テーブルの内容を表示しているとき、修正や削除のリンクをどこに表示するかを定義します(左右両方に表示することもできます)。 「左(left)」と「右(right)」は、縦表示モードでは「上(top)」と「下(bottom)」と解釈されます。
$cfg['DefaultDisplay'] string
$cfg['HeaderFlipType'] string
表示モードには横並び(horizontal)、横並び縦ヘッダ(horizontalflipped)、縦並び(vertical)の 3 つがありますが、どれをデフォルトの表示にするかを定義します。横並びモードでは各行の内容を横一列に並べます。横並び縦ヘッダモードでは、ヘッダを 90 度回転させることで、フィールドに小さな値しか入っていない場合でも詳細なヘッダを表示できるようにします。縦並びモードでは各行の内容を縦一列に並べます。

HeaderFlipType に設定できる値は「css」か「fake」です。「css」の場合、横並び縦ヘッダ(horizontalflipped)モードでのヘッダの回転は CSS を通じて行われます。「fake」の場合は PHP が変換を行いますが、もちろんこの場合、CSS ほどの見栄えにはなりません。

$cfg['DefaultPropDisplay'] string
テーブルのカラムを修正/新規作成する際、通常はすべてのフィールドが一列に横並びしますが(デフォルトの「横並び(horizontal)」)、「縦並び(vertical)」にすると、各フィールドが上から下へ縦並びになります。こうすると、横幅を大いに節約できるため、スクロールする必要がなくなります。
$cfg['ShowBrowseComments'] boolean
$cfg['ShowPropertyComments'] boolean
対応する変数を TRUE にすると表示/プロパティ画面でカラムのコメントを表示できるようになります。表示モードの場合、コメントはヘッダのなかに表示されます。プロパティモードでは、コメントがついているフィールド名の下に CSS による破線が表示されます。コメントはフィールドのツールチップとして表示されます。
$cfg['UploadDir'] string
phpMyAdmin 以外の方法(たとえば ftp)でアップロードした SQL ファイルのあるディレクトリ名。このディレクトリにあるファイルはデータベース名、続いて SQL タブとクリックして表示されるドロップダウンボックスから利用できます。

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

ご注意ください。ファイル名にはかならず「.sql」(圧縮形式のサポートが有効になっている場合は「sql.bz2」や「sql.gz」)という拡張子でなければなりません。

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

ご注意ください。PHP がセーフモードになっている場合、このディレクトリは phpMyAdmin スクリプトのオーナーと同じユーザがオーナーになっている必要があります。

また、別の方法もあります。FAQ 1.16をご覧ください。
$cfg['docSQLDir'] string
phpMyAdmin にインポートする docSQL ファイルをアップロードするディレクトリ名。

ご注意ください。PHP がセーフモードになっている場合、このディレクトリは phpMyAdmin スクリプトのオーナーと同じユーザがオーナーになっている必要があります。
$cfg['SaveDir'] string
ダンプを保存するディレクトリ名。

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

ご注意ください。このディレクトリはウェブサーバの実行ユーザが書き込みできるようになっている必要があります。

また、PHP がセーフモードになっている場合、このディレクトリは phpMyAdmin スクリプトのオーナーと同じユーザがオーナーになっている必要があります。
$cfg['TempDir'] string
一時ファイルを保管するディレクトリ名。

MS Excel のネイティブファイルをエクスポートする場合に必要になります。FAQ 6.23 をご覧ください。
$cfg['Export'] array
この配列はエクスポートの際のデフォルトパラメータを定義します。項目名はエクスポートページに表示されるテキストとほとんど同じですので、意味は簡単にわかるでしょう。
$cfg['Import'] array
この配列はインポートの際のデフォルトパラメータを定義します。項目名はインポートページに表示されるテキストとほとんど同じですので、意味は簡単にわかるでしょう。
$cfg['RepeatCells'] integer
X セルごとにヘッダを挿入します。0 の場合は繰り返しません。
$cfg['EditInWindow'] boolean
$cfg['QueryWindowWidth'] integer
$cfg['QueryWindowHeight'] integer
$cfg['QueryHistoryDB'] boolean
$cfg['QueryWindowDefTab'] string
$cfg['QueryHistoryMax'] integer
これらの変数はいずれもクエリウインドウ機能に関するものです。SQLというリンクないしアイコンは常に左パネルに表示されます。ブラウザの JavaScript が有効になっている場合は、ここをクリックすると別のクエリウインドウが開き、SQL クエリを直接入力できるようになります。JavaScript が無効の場合は右パネルがクエリボックスに変わります。

クエリウインドウの大きさは $cfg['QueryWindowWidth']$cfg['QueryWindowHeight'] によってカスタマイズできます。いずれもピクセル数を表す整数値が入ります。なお、これらの値は通常 layout.inc.php の中でお使いのテーマにあわせて修正されます。

$cfg['EditInWindow'] が true の場合は、結果ページの [修正(Edit)] (「レコード表示(Showing Rows)」のセクションにあります)をクリックすると、現在のクエリが入ったクエリウインドウが開きます。false の場合はリンクをクリックすると右パネルのクエリボックスに SQL クエリが入ります。

JavaScript 対応ブラウザを使っているなら JavaScript クエリウインドウを使うことをおすすめします。やりとりする変数の数は多いですが、使っている関数は基本的なものなので、第四世代のブラウザならたいていこの機能を利用できるはずです。現在は Internet Explorer 6 と Mozilla 1.x のみでテストしています。

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

JavaScript ベースのクエリウインドウを使うと、新しいテーブル/データベースをクリックして表示させるとかならず内容が更新されるようになります。また、クエリを利用したあとで「SQL の修正(Edit SQL)」をクリックするとフォーカスが移ります。クエリウインドウの更新を抑制することもできます。クエリ textarea の下にある「別ウインドウからのクエリの上書きを禁止する(Do not overwrite this query from outside the window)」というチェックボックスをチェックすると、テーブル/データベースをバックグラウンドで表示できます。textarea の中身はなくなりません。これは最初に別のテーブルを調べなければならないクエリを作成するときには特に便利です。このチェックボックスは textarea の内容を修正すると自動的にチェックされます。内容は修正してしまったけれどもやっぱりクエリウインドウを更新させたくなった場合は、チェックを外してください。

$cfg['QueryHistoryDB'] が TRUE の場合、保存する履歴アイテムの数は $cfg['QueryHistoryMax'] で指定できます。

また、クエリウインドウは機能をまとめるためにカスタマイズ可能なタブ形式になっています。$cfg['QueryWindowDefTab'] 変数を使うと、クエリウインドウを開いたときに表示されるデフォルトタブを指定できます。設定可能な値は「sql」、「files」、「history」、「full」です。
$cfg['BrowseMIME'] boolean
MIME 変換機能を有効にします。
$cfg['MaxExactCount'] integer
どの程度大きなテーブルまで SELECT COUNT で正確な行数を取得するかを指定します。概算の行数がこの値より小さい場合は SELECT COUNT が使われますが、そうでない場合、SHOW TABLE STATUS が返す値のみが使われます。この値の影響を受けるのは現在 InnoDB テーブルのみです。
$cfg['WYSIWYG-PDF'] boolean
WYSIWYG 修正コントロールを利用して、PDF ページの要素を簡単に配置できるようにします。PDF 要素の x/y 座標を修正するページで「スクラッチボードを有効/無効にする(toggle scratchboard)」ボタンをクリックすると、スクラッチボードが有効になります。このスクラッチボードにはすべての要素が配置されています。要素をクリックすると、あらかじめ定義されている領域のなかを移動できます。x/y 座標は動的に更新されます。同様に、入力フィールドに直接新しい座標を入力しておくと、入力フィールドからカーソルが移動したときにスクラッチボード内の要素も新しい位置に移動します。
新しい位置を保存するには、テーブルの下に「OK」ボタンをクリックする必要があります。新しい要素を配置する場合は、まず要素のテーブルに追加してください。新しい要素をドラッグできるようになります。
用紙の大きさや向きを変えると、スクラッチボードの大きさも変わります。これは下のドロップダウンフィールドを変更するだけで行えます。スクラッチボードの大きさは自動的に変わります。要素の現在位置は変わりません。
要素が範囲外に出てしまった場合、用紙の大きさを拡大するか、「リセット(reset)」ボタンをクリックして、すべての要素を縦一列に並べてください。
注意: このコントロールは IE6 や Mozilla のような最近のブラウザを使わないと動作しません。ドラッグ&ドロップスクリプトの基本機能は非常に限定されたライセンスのもと、www.youngpup.net のご厚意でお借りしたものです。
$cfg['NaturalOrder'] boolean
データベースやテーブルの名前を自然な順番でソートします(たとえば、t1、t2、t10)。いまのところ左パネル(ライトモード)とデータベース画面のテーブル一覧に実装されています。
$cfg['ShowHttpHostTitle'] boolean
HTTP ホスト名をウインドウのタイトルバーに表示します。
$cfg['SetHttpHostTitle'] string
$cfg['ShowHttpHostTitle']TRUE の場合、本当の HTTP ホスト名が表示されますが、ここで別名を指定することもできます。
$cfg['ErrorIconic'] boolean
警告やエラー、通知を表示する際にアイコンを利用します。
$cfg['MainPageIconic'] boolean
メインページのリストやメニュータブにアイコンを利用します。
$cfg['ReplaceHelpImg'] boolean
「ドキュメント(Documentation)」メッセージのかわりにヘルプボタンを表示します。
$cfg['ThemePath'] string
テーママネージャが有効な場合、すべてのテーマが収録されているサブディレクトリのパスとして利用します。
$cfg['ThemeManager'] boolean
ユーザがテーマを選択できるようにします。FAQ 2.7 をご覧ください。
$cfg['ThemeDefault'] string
デフォルトテーマ(cfg['ThemePath'] の下にあるサブディレクトリのひとつ)です。
$cfg['ThemePerServer'] boolean
サーバごとに別々のテーマを許可するかどうか。
$cfg['DefaultQueryTable'] string
$cfg['DefaultQueryDatabase'] string
ユーザが何も指定しなかったときにクエリボックスに表示されるデフォルトのクエリ。%d はデータベース名、%t はテーブル名、%f はコンマで区切られたフィールド名の一覧になります。なお、%t と %f が適用されるのは $cfg['DefaultQueryTable'] に対してのみです。
$cfg['SQP']['fmtType'] string [html|none]
新しい SQL パーサの主な用途は SQL クエリを読みやすくすることです。デフォルトでは HTML を使ってクエリを整形しますが、この変数を 「none」 にするとこの機能を無効にできます。
$cfg['SQP']['fmtInd'] float
$cfg['SQP']['fmtIndUnit'] string [em|px|pt|ex]
SQL クエリを読みやすくするために、場合によってはブラケット( [ ] )に囲まれたクエリの一部がインデントされるのですが、$cfg['SQP']['fmtInd'] を変更すると、このインデントの量を変更できます。
それと似た $cfg['SQP']['fmtIndUnit'] の方は、指定したインデント量の単位を指定します。スタイルシートで利用するものです。
$cfg['SQP']['fmtColor'] string のペアの array
SQL クエリを読みやすくするために各要素につける色の定義に利用します。色を定義するペア文字列の書式は次の通りです。
クラス名 => [HTML の色コード | 空の文字列]
空の文字列を指定した場合、そのクラスの色指定は無視されてスタイルシートに反映されません。クラス名は変えないでください。変えるのは色をあらわす文字列のみです。
クラス名:
$cfg['SQLValidator']['use'] boolean
phpMyAdmin は Mimer SQL Validator サービスをサポートするようになりました。これは当初 Slashdot で公開されていたものです。
このサービスをお使いのシステムに設定する方法については、FAQ 6.14 をご覧ください。
$cfg['SQLValidator']['username'] string
$cfg['SQLValidator']['password'] string
SOAP サービスを使うと anonymous (匿名)ユーザでもパスワードによらずログインできるため、デフォルトではそのようになっていますが、SQL Validator のアカウントがあるなら、ログイン情報をここに記入すると、匿名でログインするかわりにその情報でログインするようになります。
$cfg['DBG']['enable'] boolean
開発者限定!
phpMyAdmin のデバッグ用に DBG エクステンションを有効にします。コードを解析するのに必要となります。
お使いのシステムに設定する方法については、開発者向けの情報セクションをご覧ください。
$cfg['DBG']['profile']['enable'] boolean
開発者限定!
phpMyAdmin の解析サポートを有効にします。メインウインドウに表示される各ページ末にデータの塊やそのページの解析情報を付け加えます。
この機能を正常に動作させるためには最大実行時間を増やす必要があるかもしれません。
$cfg['DBG']['profile']['threshold'] float(ミリ秒単位)
開発者限定!
解析情報を表示するときに、それぞれの解析データを表示するかどうかを決める閾値が入ります。平均処理時間がこの閾値を越える場合は表示し、そうでなければ表示しません。閾値はミリ秒であらわします。ほとんどの場合、この値を修正する必要はありません。
$cfg['ColumnTypes'] array
MySQL のカラム種別としてとりうるすべての値が入ります。ほとんどの場合、この値を修正する必要はありません。
$cfg['AttributeTypes'] array
フィールド属性としてとりうる値が入ります。ほとんどの場合、この値を修正する必要はありません。
$cfg['Functions'] array
MySQL がサポートする関数のリストです。ほとんどの場合、この値を修正する必要はありません。
$cfg['RestrictColumnTypes'] array
カラム種別と、カラムの内容の表示方法を変えるための関数を結びつけるメタ種別との対応表です。ほとんどの場合、この値を修正する必要はありません。
$cfg['RestrictFunctions'] array
$cfg['RestrictColumnTypes'] で定義されたカラムのメタ種別が利用する関数一覧です。ほとんどの場合、この値を修正する必要はありません。
$cfg['DefaultFunctions'] array
行を挿入/修正するときにデフォルトで選択される関数です。この関数は $cfg['RestrictColumnTypes'] のメタ種別ごとに定義します。first_timestamp については、テーブル内の最初の timestamp カラムに適用されます。
$cfg['NumOperators'] array
数値や日付フィールドの検索に利用できる演算子です。
$cfg['TextOperators'] array
文字フィールドの検索に利用できる演算子です。 なお、デフォルトは LIKE %...% ではなく LIKE としてあります。これはテーブルが巨大な場合に不用意にパフォーマンスの問題を起こさないようにするためです。
$cfg['EnumOperators'] array
列挙(enum)フィールドの検索に利用できる演算子です。
$cfg['NullOperators'] array
フィールドがヌル(null)になりうるときに利用できる追加の検索用演算子です。

変換機能

はじめに  -  使い方  -  ファイル構造


[1. はじめに]

変換機能を有効にするには、column_info テーブルと、適切なディレクティブを設定する必要があります。手順については「設定」セクションをご覧ください。


フィールドごとに別々の変換機能を適用できます。変換機能は各フィールドの内容を取得してから、選択された機能に定義されている規則に従って変換を行うためです。


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


利用できるすべての変換機能とそのオプションについての概略は <お使いのホスト>/<インストールしたディレクトリ>/libraries/transformations/overview.php をご覧ください。


変換機能の効果的な使い方のチュートリアルについては、phpMyAdmin のオフィシャルホームページの Link セクションをご覧ください。


[2. 使い方]

tbl_properties.inc.php ページに行きます(テーブルの「プロパティ(properties)」リンクをクリックしていけばたどり着きます)。「修正(Change)」(あるいは修正アイコン)をクリックすると、行末に新しいフィールドが 3 つ表示されます。それぞれ「MIME タイプ(MIME-type)」、「ブラウザ変換(Browser transformation)」、「変換オプション(Transformation options)」という名がついています。



[3. ファイル構造]

各 MIME タイプ用の変換機能の定義はすべて「libraries/transformations/」ディレクトリのそれぞれのファイルにまとめられています。


変換機能がファイルに保管されているのは、カスタマイズや新しい変換機能の追加を容易にするためです。


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


ただし、MIME タイプを空欄にしてグローバルな変換機能を利用することはできます。グローバルな変換機能は多くの MIME タイプで動作することが期待できます。本来の対象とは違う MIME タイプの変換機能を利用することもできますが、オプションの使い方や、その変換機能がフィールドの値をどうするかにはご注意ください。


global.inc.php」という基本ファイルは、どんな変換機能からでもインクルードできます。これはいくつかの基本的な関数を提供してくれます。


ファイル名には 5 通りの可能性があります:

  1. MIME タイプ+サブタイプ変換機能:

    [MIME タイプ]_[サブタイプ]__[機能名].inc.php

    MIME タイプとサブタイプが「_」で区切られていることにご注意ください(「_」はMIME タイプやサブタイプの名前には含まれないことになっています)。また、変換機能/ファイル名に含められる文字は、ファイルシステムや PHP 関数の命名規約上問題を起こさない文字のみです。

    この変換関数は「PMA_transform_[MIME タイプ]_[サブタイプ]__[機能名]()」で呼び出せます。

    例:

    text_html__formatted.inc.php
    PMA_transform_text_html__formatted()
  2. MIME タイプ(サブタイプなし)変換機能:

    [MIME タイプ]__[機能名].inc.php

    1 文字の「_」がないことにご注意ください。 変換機能/ファイル名に含められる文字は、ファイルシステムや PHP 関数の命名規約上問題を起こさない文字のみです。

    この変換関数は「PMA_transform_[MIME タイプ]__[機能名]()」で呼び出せます。

    例:

    text__formatted.inc.php
    PMA_transform_text__formatted()
  3. MIME タイプ+サブタイプ。特定な変換関数はなし

    [MIME タイプ]_[サブタイプ].inc.php

    ファイル名に「__」が含まれないことにご注意ください。また、ファイル名にはファイルシステム上問題を起こす特殊文字は使わないでください。

    このファイルそのものには変換関数は定義しません。

    例:

    text_plain.inc.php
    (関数はなし)
  4. MIME タイプ(サブタイプなし)。特定の変換関数はなし

    [mimetype].inc.php

    ファイル名に「_」の文字が含まれないことにご注意ください。また、ファイル名にはファイルシステム上問題を起こす特殊文字は使わないでください。

    このファイルそのものには変換関数は定義しません。

    例:

    text.inc.php
    (関数はなし)
  5. グローバル変換関数。特定の MIME タイプはなし

    global__[機能名].inc.php

    変換関数は「PMA_transform_global__[機能名]()」で呼び出せます。

    例:

    global__formatted
    PMA_transform_global__formatted()

このように、一般的に MIME タイプとサブタイプは「_」で区切り、「__」は変換関数名を示します。


ファイル名に「__」を含まないものはいずれも有効な変換関数としてドロップダウンに表示されることはありません。


独自の変換関数を加えるには libraries/transformations/TEMPLATE ファイルを、変換関数なしで MIME タイプを追加するには libraries/transformations/TEMPLATE_MIMETYPE ファイルをご覧ください。また、言語ファイルには関数の機能の紹介も書いてください。各関数ごとに $strTransformation_[.inc.php 抜きのファイル名] が存在している必要があります。


テンプレート生成ツールを使って新しい関数と言語ファイルのエントリを生成することもできます。


新しい変換関数を作成する場合は libraries/transformations/template_generator.sh を、新しい、空の MIME タイプを作成する場合は libraries/transformations/template_generator_mimetype.sh をご覧ください。


変換関数には常に 3 つの変数が渡されます:

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

FAQ - よくある質問

サーバ  -  設定  -  制限  -  マルチユーザ  -  ブラウザ  -  使い方のコツ  -  プロジェクト  -  セキュリティ


phpMyAdmin の機能やインタフェースの詳細については phpMyAdmin のオフィシャルホームページにある Link セクション をご覧ください。


[1. サーバ]

[1.1] PHP 4+ を走らせているのですが、特定のアクションが要求されるたびにサーバがクラッシュしたり、ブラウザに空白のページや暗号のような文字だらけのページが表示されます。どうしたらよいのでしょう。

PHP の出力バッファリングや圧縮にはいくつか既知のバグがあります。
config.inc.php ファイルの $cfg['OBGzip'] ディレクティブを FALSE に、php の設定ファイルの zlib.output_compression ディレクティブを Off にしてみてください。
また、私たちが把握している限り、そういった問題は PHP 4.2.0 のプレリリース版(PHP 4.2.0 RC1 〜 RC4 でテストしました)と MS Internet Explorer を組み合わせたときに起こります。PHP 4.2.0 のリリースバージョンにアップグレードしてください。

[1.2] phpMyAdmin を使うと Apache サーバがクラッシュします。

まず、Apache(と、もしかすると MySQL)の最新版を使うようにしてみてください。
また、出力バッファリングに関する PHP のバグについて説明している FAQ 1.1 もご覧ください。
それでもサーバがクラッシュするようなら、Apache の各種サポートグループに援助を求めてください。

[1.3] 「クッキー」認証モードの phpMyAdmin を Apache 2+ モジュールとしてロードした PHP 4.2.0 ないし 4.2.1 上で走らせているのですが、スクリプトに入れません。かならずログイン画面が表示されます。

これは PHP 側の既知のバグです(→ バグレポート)。出典は PHP のオフィシャルバグデータベースです。これは phpMyAdmin 側では修正しようがありませんので、放ってあります。この先も修正しません。

[1.4] phpMyAdmin を IIS 上で使うと、「The specified CGI application misbehaved by not returning a complete set of HTTP headers...(指定した CGI にはエラーがあります。HTTP ヘッダが不完全です)」というエラーメッセージが表示されます。

php の配布ファイルに入っている install.txt を読み忘れたのでしょう。こちらのバグレポートの最後のメッセージをご覧ください。出典は PHP のオフィシャルバグデータベースです。

[1.5] phpMyAdmin を IIS 上で使うと、HTTP (アドバンスト)認証モードのときにクラッシュしたり、エラーメッセージがたくさん表示されます。

これは PHP の ISAPI フィルタの既知の問題です(ISAPI フィルタはあまり安定していないのです)。HTTP 認証モードではなく、クッキー認証モードをお使いください。

[1.6] PWS 上で phpMyAdmin を使えません。何も表示されません!

PWS のバグのようです。Filippo Simoncini が回避策を見つけています(現時点ではこれ以上の対応策はありません)。header.inc.phpheader_printview.inc.phpindex.phpleft.phplibraries/common.lib.phpDOCTYPE 宣言(2 行)を削除するか、コメントにしてください。

[1.7] どうすればダンプや CSV エクスポートを GZip ないし Bzip 圧縮できるのでしょう。動いていないようなんですが。

これらの機能はプラットフォーム(Unix か Windows か、セーフモードかどうか、など)からの独立性を高めるために PHP の gzencode()bzcompress() 関数をベースにしています。そのため、PHP4  ≧ 4.0.4 と Zlib/Bzip2 サポート(--with-zlib--with-bz2)が必要です。
また、phpMyAdmin を PHP 4.2.0 のプレリリース版上で走らせているときにダンプを MS Internet Explorer でダウンロードしようとすると PHP がクラッシュするという問題がありました。この場合は PHP 4.2.0 をリリース版に切り替えてください。

[1.8] テーブルにテキストファイルを挿入できません。セーフモードになっているというエラーが出ます。

アップロードしたファイルは php.iniupload_tmp_dir 変数に定義されている「アップロードディレクトリ(upload dir)」に保存されます(通常システムデフォルトは /tmp になっています)。
Apache サーバをセーフモードで走らせる場合は次のようにセットアップすることをおすすめします。こうすると、ファイルのアップロードを可能にしながらある程度のセキュリティも確保できます:

[1.9] ファイルのアップロードに困っています。私のシステムでは総じてファイルアップロードがうまくいかないのですが、アップロードしたファイルの 1 行目に Content-Type: ヘッダがついてしまいます。

本当は phpMyAdmin 関連の問題ではなく、RedHat 7.0 の問題なのですが、お使いのシステムは RedHat 7.0 で、PHP RPM を php-4.0.4pl1-3.i386.rpm にアップデートしたのではありませんか?
そうだとしたら、問題はこのパッケージが抱えている深刻なバグのせいです。このバグはずいぶん前に修正されたはずなのですが(2001-01-28:詳細については PHP のバグ追跡システム をご覧ください)、困ったことに、修正後もバグ入りのパッケージがまだ出回っているのです(詳細については RedHat の BugZilla をご覧ください)。
ですから、修正済みのパッケージ(4.0.4pl1-9) をダウンロードしていただければ問題は解決します。
また、この修正版はファイルアップロードの際の \r\n 問題も解決してくれます!

[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 制限(open_basedir restriction)」が出ます。

バージョン 2.2.4 以降、phpMyAdmin はサーバの open_basedir 制限をサポートしています。この制限下でもカレントディレクトリ(「.」)にあるファイルが開けるようなら、必要なのは phpMyAdmin をインストールしたディレクトリに「一時」ディレクトリを作って、パーミッションを 777 にし、phpMyAdmin のディレクトリと同じオーナーにすることだけです。アップロードしたファイルはそこに移され、SQL コマンドの実行が終わったら削除されます。

[1.12] MySQL のルートパスワードをなくしてしまいました。どうしたらよいのでしょう。

MySQL のマニュアルにパーミッションをリセットする方法が説明されています。

[1.13] ブックマークを実行しようとすると「SQL クエリがありません(No SQL query)」というエラーが出ます。

PHP が upload_tmp_dir を読み書きできるようになっていないと、アップロードしたクエリにはアクセスできません。

[1.14] 適当なテキストエリアからクエリを送信すると「SQL クエリがありません(No SQL query)」というエラーが出ます。

PHP の設定ファイルの post_max_size ディレクティブをチェックして、値を増やしてみてください。

[1.15] mysql.user というフィールド名のことで困っています。

MySQL の古いバージョンでは UserPassword フィールドが userpassword という名前だったせいです。フィールド名を現在の標準にあわせて修正してください。

[1.16] (メモリ、http、タイムアウトのせいで)大きなダンプファイルをアップロードできません。

バージョン 2.7.0 以降はインポートエンジンが書き直されたため、この問題は起こらないはずです。可能であればお使いの phpMyAdmin を最新のバージョンにアップグレードして新しいインポート機能をご利用ください。

まずは php.ini 設定ファイルの upload_max_filesizememory_limitpost_max_size の値をチェックしてください(あるいはプロバイダにチェックしてもらってください)。この 3 つの設定はいずれも PHP 経由で送信/取り扱いできるデータサイズの上限を決めるものです。また、あるユーザによると、post_max_size と memory_limit も upload_max_filesize より大きい必要があるそうです。

アップロードファイルが大きすぎる、あるいはホスティングしてもらっているプロバイダが設定を変えたがらない場合にはいくつかの対策があります。

[1.17] phpMyAdmin をサポートしている MySQL のバージョンは?

3.23.32 から 5.0 までの全バージョン(4.1.0 と 4.1.1 を除く)で完全にサポートされていますが、ご注意ください。MySQL のバージョンが古くなればなるほど、多くの制限に直面することになります。
phpMyAdmin が MySQL サーバに接続するときには、古典的な MySQL エクステンション だけでなく、php 5.0 で利用できるようになった 改良版 MySQL エクステンション(MySQLi) も利用できます。
いずれにしても、どちらのエクステンションの開発陣も、MySQL 4.0 以下には昔ながらのエクステンションを、MySQL 4.1 以降には MySQLi を利用するよう推奨しています。
php をコンパイルするときには、お好みの MySQL エクステンションを少なくともマイナーバージョンまで同じ MySQL クライアントライブラリに手作業でリンクさせることを強く推奨します。別の配布ファイルにバンドルされていたものはやや古くなっているために問題を起こすことがあるためです(FAQ 1.17a もご覧ください)。
MySQL 5.1 はまだサポートされていません。

[1.17a] MySQL サーバに接続できません。かならず「Client does not support authentication protocol requested by server; consider upgrading MySQL client(サーバが要求する認証プロトコルをクライアントがサポートしていません。MySQL クライアントのアップグレードをご検討ください)」というというエラーメッセージが返ってきます。

古い MySQL クライアントライブラリで MySQL にアクセスしようとしたためです。MySQL クライアントライブラリのバージョンは phpinfo() の出力でチェックできます。一般に、少なくともサーバと同じマイナーバージョンのものを使ってください。- FAQ 1.17 に述べた通りです。

この問題は一般的に 4.1 以上のバージョンの MySQL で起こります。MySQL の認証ハッシュが変わったのに、お使いの PHP が古い方法を試そうとするためです。この問題を適切に解決するには、mysqli エクステンションと、お使いの MySQL のバージョンにあわせた適切なクライアントライブラリを利用してください。選択したエクステンションは $cfg['Servers'][$i]['extension'] で指定します。詳細(といくつかの対策)については MySQL のドキュメントをご覧ください。

[1.18] lower_case_table_names を 1 にした MySQL ≦ 4.0.1 を走らせています。大文字が含まれているテーブルを新規作成したら、小文字に変わるはずなのですが、このテーブルを DROP しようとしても、MySQL が該当するファイルを見つけてくれません。

これは MySQL ≦ 4.0.1 のバグです。最低でも MySQL 4.0.2 にまでアップグレードするか、lower_case_table_names ディレクティブをオフにしてください。

[1.19] 「リレーション表示(display relations)」機能を実行できません。私が使っているフォントを認識してくれないようです。

私たちがこの機能を実現するのに利用している「FPDF」ライブラリは、いくつかの特別なファイルがないとフォントを利用できません。
その特別なファイルの作り方は FPDF マニュアル をご覧ください。

[1.20] 「cannot load MySQL extension, please check PHP Configuration(MySQL エクステンションをロードできません。PHP の設定をチェックしてください)」というエラーが出ます。

PHP が MySQL サーバに接続する際には「MySQL エクステンション」という MySQL の関数セットを必要とします。このエクステンションは PHP の配布ファイルに含まれている(コンパイルで組み込まれている)こともありますが、そうでない場合、動的にロードする必要があります。エクステンション名はたぶん mysql.sophp_mysql.dll のはずですが、phpMyAdmin はこのエクステンションをロードしようとして失敗しているわけです。

ふつう、この問題は「PHP-MySQL」とかなんとかという名前のソフトウェアパッケージをインストールすれば解決します。

[1.21] CGI 版の PHP を Unix 環境で走らせているのですが、クッキー認証を使ったログインができません。

php.inimysql.max_links を 1 より大きな値にしてください。

[1.22] 「テキストファイルの場所(Location of text file)」フィールドが見つからないのでアップロードできません。

いちばんありがちな理由は、php.inifile_uploads パラメータが「on」になっていないことです。

[1.23] MySQL を Win32 マシンで走らせているのですが、新規テーブルを作成するたびにテーブル名とフィールド名が小文字に変わってしまいます!

これは lower_case_table_names という MySQL のディレクティブが Win32 版のデフォルトでは 1(ON)になっているためです。この動作はこのディレクティブを 0(OFF)にするだけで変えられます:
Windows ディレクトリにあるはずの my.ini ファイルを編集して、次の行を [mysqld] グループに追加してください:
set-variable = lower_case_table_names=0
次に、そのファイルを保存して、MySQL サービスを再起動します。このディレクティブの値は次のクエリでいつでもチェックできます。
SHOW VARIABLES LIKE 'lower_case_table_names';

[1.24] クエリの一部の文字が切り捨てられたり、ランダムな文字が付け加わったりしてしまいます。PHP は 4.2.3 です。

これは PHP 4.2.3 のバグ です。

[1.25] Windows XP で Apache に mod_gzip-1.3.26.1a を組み込んで走らせているのですが、SQL クエリを実行したときに変数が定義されていないといった問題が出ます。

Jose Fandos からのヒント:httpd.conf に下記の行があったら、このようにコメントにしてください:
# mod_gzip_item_include file \.php$
# mod_gzip_item_include mime "application/x-httpd-php.*"
このバージョンの mod_gzip on Apache(Windows)には PHP スクリプトの扱いに問題があるのです。もちろん Apache を再起動する必要があります。

[1.26] phpMyAdmin を IIS のドキュメントルートにインストールしたところなのですが、phpMyAdmin を実行しようとすると「No input file specified(入力ファイルが指定されていません)」というエラーが出ます。

これはパーミッションの問題です。phpmyadmin フォルダを右クリックして、プロパティを選んでください。セキュリティタブを開き、「追加(Add)」をクリックして、一覧から「IUSR_machine」を選択します。このユーザにパーミッションを設定すれば動くはずです。

[1.27] 巨大なページ(たとえばテーブルがたくさんある db_details_structure.php )を表示したいのに空白ページが表示されます。

これは PHP のバグ です。GZIP 出力バッファリングが有効になっていると起こりますので、バッファリングを(config.inc.php$cfg['OBGzip'] = FALSEとして)オフにすれば動くはずです。このバグは 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] 「left.php: Missing hash(ハッシュがありません)」というエラーが出ます。

この問題はサーバが Turck MMCache を走らせていると起こることがわかっていますが、MMCache をバージョン 2.3.21 にアップグレードすれば解決します。

[1.31] phpMyAdmin は php5 をサポートしているのですか。

はい。
ただし、phpMyAdmin は php4 への後方互換性を守る必要があるため、error_reporting の設定で E_STRICT を有効にしてしまうと動かなくなります。

[1.32] IIS でも HTTP 認証を利用できますか。

はい。以下の手順は phpMyAdmin 2.6.1 と、IIS 5.1 の ISAPI モードで動かした PHP 4.3.9 で確認しました。

  1. お使いの php.ini ファイルに cgi.rfc2616_headers = 0 という設定を加えます。
  2. Web サイトの「プロパティ」 -> 「ディレクトリセキュリティ」タブ -> 「匿名アクセスおよび認証コントロール」の「編集」で表示されるダイアログボックスで、匿名アクセスのチェックボックスをチェック、それ以外のチェックボックスのチェックを外します(つまり、基本認証, 統合 Windows 認証、有効になっている場合はダイジェスト認証のチェックを外します)。OKをクリックします。
  3. 「カスタムエラー」タブで、401;1 から 401;5 までを選択し、「既定値に設定」ボタンをクリックします。

[1.33] 64 ビットのシステムで PHP 5.0.4 を走らせているときの mysqli エクステンションに問題がありませんか?

はい。この問題は phpMyAdmin にも影響を与えますので(「Call to undefined function pma_reloadnavigation(未定義の関数 pma_reloadnavigation の呼び出し)」)、PHP を新しいバージョンにアップグレードしてください。

[1.34] データベースやテーブルのページに直接アクセスできますか?

はい。そのままでも http://server/phpMyAdmin/index.php?db=database&table=table のような URL は利用できますが、http://server/phpMyAdmin/database/table のような URL を使いたい場合はいくつかの設定をする必要があります。以下の例は Apache ウェブサーバにしか適用できませんが、まずはグローバルな設定でいくつかの機能を有効にしてあるか確認してください。phpMyAdmin をインストールしたディレクトリについては Options FollowSymLinksAllowOverride FileInfo が有効になっている必要がありますし、mod_rewrite を有効にしておく必要もあります。あとは、以下のような .htaccess ファイルを phpMyAdmin をインストールした場所のルートフォルダに作成するだけです(例示したディレクトリ名の変更を忘れないでくださいね(^^) ):

RewriteEngine On
RewriteBase /path_to_phpMyAdmin
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]

[2. 設定]

[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)...(警告:MySQL の接続に失敗しました。ソケット '/tmp/mysql.sock' (111) ではローカルの MySQL サーバに接続できません)」というエラーメッセージが表示されます。どうすればよいのでしょう。


RedHat ユーザの場合、Harald Legner がメーリングリストで次のような提案をしています:

私の 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 を再起動すれば動くはずです。

こちらは Brad Ummer が提案した対策です:

また、MySQL 文書の該当セクションもご覧ください。

[2.4] phpMyAdmin を実行しようとしているのですがブラウザに何も表示されません。どうしたらよいのでしょう。

phpMyAdmin の設定ファイルで $cfg['OBGZip'] ディレクティブを FALSE にしてみてください。それでうまくいくことがあります。
また、PHP のバージョンを確かめてください。「4.0b...」という文字が含まれている場合はベータ版の PHP が走っているということですが、これはあまりよいことではありませんので、ベータ版でないものにアップグレードしてください。

[2.5] レコードを挿入/修正しようとしたり、データベースやテーブルを削除しようとするたびに404(ページが見つかりません)エラーが表示されます。また、HTTP ないしクッキー認証をしているときはログインしなおすように求められます。何が悪いのでしょう。

phpMyAdmin 設定ファイルの $cfg['PmaAbsoluteUri'] ディレクティブの値をチェックしてください。

[2.6] localhost にポート転送しているホストの MySQL サーバにアクセスしようとすると、「Access denied for user: 'root@localhost'(Using password: YES)('root@localhost'ユーザのアクセスは拒否されました。パスワードは利用しています)」というエラーが出ます。

localhost のポートを利用して、ポート転送で別のホストにリダイレクトすると、MySQL は期待通りに localhost を解決してくれません。
Erik Wasser は次のように説明しています:解決法は次の通りです:ホストが「localhost」の場合、MySQLは(コマンドラインツールの「mysql」もそうですが)高速化のためにかならずソケットを利用して接続しようとします。これは、このようにポート転送する設定では動作しません。
ホスト名を「127.0.0.1」にすれば万事解決。MySQL は TCP 接続を利用するようになります。

[2.7] テーマの使い方と作り方

テーマは $cfg['ThemePath']$cfg['ThemeManager']$cfg['ThemeDefault'] で設定します。

$cfg['ThemePath'] の下の「original」ディレクトリやその下位構造は削除しないでください。これは phpMyAdmin が利用するシステムテーマです。「original」にはすべての画像やスタイルが格納されています。これは後方互換性のためと、画像や css ファイルが含まれていないすべてのテーマのためです。

$cfg['ThemeManager'] が有効の場合、メインページで好みのテーマを選択できます。選択したテーマはクッキーに保管されます。

テーマの作り方:


テーマディレクトリの info.inc.php というファイルにはテーマの長い名前、テーマの世代、テーマのバージョンを入れます。このバージョンと世代は 1 から始まる数字です。また、phpMyAdmin のバージョンと直接の関係はありません。同じ世代のテーマは後方互換性があるようにしてください。つまり、バージョン 2 のテーマはバージョン 1 が必要な phpMyAdmin でもうまくいくようにしてください。世代の異なるテーマは互換性がありません。

独自のシンボルやボタンを使いたいのでなければ、「your_theme_name」から「img」ディレクトリを削除してください。デフォルトの(システムテーマである「original」の)アイコンやボタンが使われます。

[2.8] 「Missing parameters(パラメータが抜けています)」というエラーが出ます。どうしたらよいのでしょう?

確認すべき点はいくつかあります:


[3. 既知の制限]

[3.1] HTTP 認証を使っているときにログアウトすると、同じニックネームでは再ログインできません。

これは phpMyAdmin が利用している認証のメカニズム(プロトコル)による制限です。この問題を回避するには、開いているブラウザのウインドウを一度すべて閉じてから、phpMyAdmin に戻ってください。再ログインできるようになっているはずです。

[3.2] 大きなテーブルを圧縮モードでダンプするとメモリ制限のエラーや時間制限のエラーが出ます。

圧縮されたダンプがメモリ上に生成されるのが php のメモリ制限にひっかかる原因です。GZip/BZip2 エクスポートについては 2.5.4 以降 $cfg['CompressOnFly'] を使うとこの問題を克服できます(デフォルトで有効になっています)。Zip エクスポートはオン・ザ・フライ生成できませんので、大きめのダンプの Zip ファイルが必要な場合、別の方法をとる必要があります。

[3.3] InnoDB テーブルでテーブルをリネームしたり定義を変更すると外部キーのリレーションが切れます。

これは InnoDB のバグのようです(MySQL 3.23.50 で修正済み?)。

[3.4] MySQL サーバの配布ファイルにバンドルされてきた mysqldump ツールで作成したダンプをインポートできません。

この問題は mysqldump が下記のような無効なコメントを作成するためです:

-- MySQL dump 8.22
--
-- Host: localhost Database: database
---------------------------------------------------------
-- Server version 3.23.54

このコードで無効なのは - を並べた区切り線の部分です。この区切り線は、mysqldump で作成したダンプにはかならず一度登場します。このダンプを利用するには、ダンプを修正して MySQL で有効な形にする必要があります。つまり、問題の行の先頭 2 つのハイフンのあとに空白を入れるか、問題の行の先頭に # を付け加える必要があるということです:
-- -------------------------------------------------------
または
#---------------------------------------------------------

[3.5] ネストフォルダを使うと($cfg['LeftFrameTableSeparator'])、複数の階層を持つものがおかしな表示になることがあります?!

ご注意ください。間に文字をはさまずに区切り文字を連続して使ったり、テーブル名の前後に区切り文字を使ってはいけないのです。どうしてもそうする必要があるなら、別の区切り文字(TableSeparator)を使うか、この機能を無効にすることを検討してください。

[3.6] InnoDB では現在サポートされていない機能はありますか。

リレーション表示では、別のデータベースのテーブルを選択することや、複数のインデックスフィールドを外部キーにすることがそうです。

Query-by-example(Query)では、外部テーブルから LEFT JOIN されたクエリの自動生成がそうです。

PDF スキーマ修正では、自動レイアウトがそうです。

[3.7] フィールド数の多い(100+)テーブルがあるのですが、このテーブルを表示しようとすると「Warning: unable to parse url(警告:urlを解析できません)」というエラーがたくさん出ます。どうすれば直るのでしょうか。

テーブルにプライマリキーやユニークなキーがない場合、行を特定するために長い SQL を使う必要があるのですが、それが 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 の組み立て方に大きく変わる部分があります(→ http://dev.mysql.com/doc/mysql/ja/ANSI_mode.html)。とりわけ重要なのが、引用符(")が識別子をクオートする文字として解釈され、文字列をクオートする文字とはみなされなくなることです。そのため、phpMyAdmin 内部の多くの操作が無効な SQL 文になるのです。この動作には回避策がありません。この問題についての最新情報はバグレポートの #816858 に投稿されます。

[3.10] プライマリキーがないのにつづりが同じ語がある場合:SELECT の結果、同じ値を持つカラムが複数表示された場合(たとえば SELECT lastname from employees where firstname like 'A%' の結果「Smith」という値が 2 つ表示された場合)、修正(Edit)をクリックしても意図した通りの行を修正しているのかわかりません。

テーブルにプライマリキーを設定するようにしてください。そうすると phpMyAdmin は修正/削除のリンクにプライマリキーを利用するようになります。

[3.11] InnoDB テーブルのレコード数が正しくありません。

phpMyAdmin は手軽な方法で行数を取得していますが、この方法を使うと InnoDB テーブルの場合は概数しか返ってこないのです。$cfg['MaxExactCount'] の項にはそういった結果を修正する方法が載っていますが、その方法をとると性能に深刻な影響を与えることがあります。

[3.12] MySQL 3 を使うときの phpMyAdmin の制限は?

COUNT や GROUP BY を含むクエリのレコード数は正しく計算されません。また、「SELECT * from table GROUP BY ...」のようなクエリの結果のソートにも問題があります。

[3.13] USE の後にハイフンを含むデータベース名を入力するとエラーが出ます。

私が現在の MySQL 4.1.11 の API でテストした限り、API はそのような構文の USE コマンドを認めていません。データベース名をバッククォートでくくるとうまくいきます。ただし、ややこしいことに、コマンドラインの mysql ではバッククォートが不要なのです。


[4. ISP、マルチユーザ用インストール ]

[4.1] 当方は ISP なのですが、phpMyAdmin はセントラルコピーをひとつセットアップすればよいのでしょうか。それともお客様ひとりひとりにインストールする必要があるのでしょうか。

バージョン 2.0.3 以降、phpMyAdmin はユーザ全員が使えるセントラルコピーをセットアップできるようになりました。この機能の開発にあたってはありがたいことに NetCologne GmbH 社がスポンサーになってくださいました。この機能を使うには、MySQL ユーザ管理機構が適切にセットアップされていること、phpMyAdmin は HTTP ないしクッキー認証を使うことが必要です。インストールセクションの「HTTP 認証の使い方」をご覧ください。

[4.2] phpMyAdmin を不正アクセスから守るにはどうすればよいのでしょう。

お使いのシステムによります。
外部の人がサーバにアクセスできないようになっているのであれば、ウェブサーバにバンドルされているディレクトリ保護機能を使えば十分です(たとえば、Apache なら .htaccess ファイルを利用できます)。
外部の人が telnet でサーバにアクセスできるのであれば、phpMyAdmin の HTTP 認証ないしクッキー認証機能を使った方がよいでしょう。

提案:

[4.3] /lang/libraries のファイルをインクルードできないというエラーが出ます。

php.ini をチェックしてください(あるいは、システム管理者にチェックしてもらってください)。include_path のどこかに「.」が含まれている必要があります。また、open_basedir を使う場合は「.」と「./lang」が含まれていないと正常に動作しません。

[4.4] HTTP 認証を使うとかならず「Access denied(アクセスは拒否されました)」になります。

いくつかの理由が考えられます:

[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 ブロックに含まれないネットワークからログインするのを防ぐものです。
    //プライベートネットワーク以外からのログインをブロックします
    $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
    $cfg['Servers'][$i]['AllowDeny']['rules'] = array (
        '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 アドレスを入力した場合がそうです。


[5. ブラウザ、クライアント 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.4] クッキー認証モードを使えません。Internet Explorer がクッキーを保管してくれないのです。

MS Internet Explorer は、クッキーについては本当にバグが多いようです。少なくともバージョン 6 まではそうですし、Andrew Zivolup のおかげで PHP 4.1.1 にクッキー関連のバグがあることも突き止めました!
というわけで、PHP 4.1.1 を使っている場合はアップグレード/ダウングレードしてみてください……それで動くかもしれません!

[5.5] Internet Explorer 5.0 で行を表示すると JavaScript エラーが出ます。

最低でも Internet Explorer 5.5 SP2 までアップグレードしてください。

[5.6] Internet Explorer 5.0、5.5、6.0 でフィールド数の多いテーブルや、テキストフィールドがあるテーブルの行を修正しようとすると(「Page not found(ページが見つかりません)」のような)エラーが出ます

テーブルにプライマリキーやユニークキーがないと、行を識別するために長い URL を使うことになってしまうのですが、これらのブラウザには URL の長さに制限があるため、その問題が起こります。この問題は、たとえば Netscape では起こりません。回避するには、プライマリキーやユニークキーを作成するか、別のブラウザを使ってください。

[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 のバグです(→ BugZilla のバグ #26882)

[5.10] Netscape 4.75 では CSV エクスポートファイルの各データ行の間に空行が入ってしまいます。

これは Netscape 4.75 の既知のバグです:octet-stream モードでデータをエクスポートする際にラインフィードを追加してしまうのです。このバージョンの Netscape を検知することはできませんので、このバグは回避できません。

[5.11] ドイツ語のウムラウトのような拡張 ASCII 文字が正しく表示されません。

ブラウザの文字セットが phpMyAdmin のスタートページで選択した言語ファイルの文字セットとあっているかご確認ください。 また、最近のブラウザならたいていサポートしている自動検知モードを試してみる手もあります。

[5.12] Apple OS X:Safari ブラウザでは特殊文字が「?」になってしまいます。

この問題を報告してくれた OS X ユーザによると、Chimera、Netscape、Mozilla ではこの問題は起こらないそうです。

[5.13] Internet Explorer 5.5 や 6 で HTTP 認証タイプを利用すると、2 つのサーバを管理できなくなります:最初のサーバにログインして、別のサーバにログインするまではよいのですが、最初のサーバに戻ると、操作するたびにログインしなければならなくなるのです。

これは Internet Explorer のバグです。ほかのブラウザではこのようなことは起こりません。

[5.14] Opera6 を使うと、認証までは行き着くのですが、その後は何も起こらず、まっさらな画面のみが表示されます。

$cfg['QueryFrameJS'] が TRUE になっていると Opera6 ではバグになります。Opera6 は JavaScript が書いたフレームセット定義を解釈できないためです。最低でも Opera7 にアップグレードしてください。

[5.15] Safari で表示に問題があります。

最低でもバージョン 1.2.3 にアップグレードしてください。

[5.16] Internet Explorer で「アクセスが拒否されました(Access is denied)」という Javascript のエラーが出ます。あるいは、Windows 環境で phpMyAdmin を実行できません。

以下の点を確認してください。

[5.17] Firefox でデータ行を削除したりデータベースを削除したりできません。

多くのユーザが、Firefox にインストールしたタブブラウザエクステンションが問題を起こしていることを確認しています。


[6. phpMyAdmin の使い方]

[6.1] テーブルに新しい行を挿入できません/テーブルを作成できません - MySQL が SQL エラーを返します。

SQL エラーを子細に吟味してください。よく問題になるのがフィールド種別の指定を間違えることです。
ありがちなエラーの例です:

また、MySQL マニュアルの文法の章を見て、文法が正しいか確認してください。

[6.2] テーブルを作るときに 2 つのフィールドでインデックスのチェックボックスをクリックしたのですが、phpMyAdmin はその 2 つのフィールドにひとつしかインデックスを生成してくれません。

phpMyAdmin 2.2.0 や 2.2.1 では、これはまさに複数フィールドにまたがるインデックスの作り方なのです。インデックスを 2 つ作りたいときは、テーブルを作成するときに最初のインデックスを作り、保存してから、テーブルのプロパティを表示し、インデックスのリンクをクリックして次のインデックスを作るようにします。

[6.3] テーブルにヌルの値を挿入するにはどうすればよいのでしょう。

バージョン 2.2.3 以降、ヌルにできるフィールドにはそれぞれチェックボックスが用意されています。2.2.3 より前は、フィールドの値としてクオートなしで「null」と入力する必要がありました。バージョン 2.5.5 以降では、本当のヌル値を得るにはチェックボックスを使う必要があります。「NULL」と入力すると、そのフィールドにはヌル値ではなく、文字列の NULL が入ります(PHP4 ではそれでうまくいきます)。

[6.4] データベースやテーブルのバックアップはどうすればよいのでしょう。

左フレームでデータベース/テーブル名をクリックします。プロパティが表示されますので、メニューの「エクスポート(Export)」をクリックします。構造、データ、あるいは構造とデータをダンプできるようになります。生成されるのは標準的な SQL 文ですので、データベース/テーブルを作り直すのに使えます。

「ファイルに保存(Save as file)」を選択する必要も出てくることでしょう。「ファイルに保存(Save as file)」を選択すると、phpMyAdmin は生成されたダンプをワークステーションに送信します。PHP の設定によってはダンプを圧縮するオプションが表示されます。$cfg['ExecTimeLimit'] 設定変数についてもご覧ください。

この問題についての詳細は、この文書で「ダンプ」という語を検索してください。

[6.5] どうすればダンプからデータベースやテーブルを復元(アップロード)できるのでしょう。どうすれば「.sql」ファイルを実行できるのでしょう。

左フレームでデータベース名をクリックします。プロパティが表示されるので、右フレームのタブ一覧から「インポート(Import)」(お使いの phpMyAdmin のバージョンが 2.7.0 より前の場合は「SQL」)を選択してください。「テキストファイルの位置(Location of the text file)」セクションにダンプファイル名をタイプするか、選択(Browse)ボタンでファイルを指定して、実行(Go)をクリックします。

バージョン 2.7.0 以降はインポートエンジンが書き直されたため、可能であればお使いの phpMyAdmin を最新のバージョンにアップグレードして新しいインポート機能をご利用ください。

この問題についての詳細は、この文書で「アップロード」という語を検索してください。

[6.6] どうすれば Query-by-example の際にリレーションテーブルを使えるのでしょう。

たとえば、persons、towns、countries というテーブルがすべて mydb というデータベースのなかにあるとします。pma_relation テーブルがない場合は設定セクションで説明されている通りに作ります。続いて、この例で使うテーブルを作ります:

     CREATE TABLE REL_countries (
       country_code char (1) NOT NULL default '',
       description varchar (10) NOT NULL default '',
       PRIMARY KEY (country_code)
     ) TYPE=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)
     ) TYPE=MyISAM;

     INSERT INTO REL_persons VALUES (11, 'Marc', 'S', '');
     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)
     ) TYPE=MyISAM;

     INSERT INTO REL_towns VALUES ('S', 'Sherbrooke');
     INSERT INTO REL_towns VALUES ('M', 'Montréal');

適切なリンクと表示情報をセットアップするには:

それが済んだら、以下のようなテストをします:


[6.7] どうすれば「表示するフィールド(display field)」機能を使えるのでしょう。

前項の例に続いて、設定セクションで説明した pma_table_info を作ります。persons テーブルを表示して、town code ないし country code の上にマウスを移動します。

FAQ 6.21 もご覧ください。「表示するフィールド(display field)」を有効にすると追加される、とりうる値をドロップダウンで一覧する機能について書かれています。

[6.8] どうすればデータベースの PDF スキーマを作れるのでしょう。

まず、「relation」、「table_coords」、「pdf_pages」という設定変数に値を入れる必要があります。

次に、スキーマのレイアウト、つまり、どのテーブルをどのページに入れるかを検討する必要があります。

[6.9] phpMyAdmin がカラムの種別を変えてしまいます!

phpMyAdmin ではありません。MySQL が 暗黙のカラム種別変換をしているのです。

[6.10] 特権を作成するとき、データベース名にアンダースコア(下線)を入れるとどうなりますか。

アンダースコアの前にバックスラッシュをつけない場合は「なにか 1 文字」をあらわすワイルドカードになります。データベース名が「john_db」なら、そのユーザは john1db、john2db …への特権を得ることになります。

アンダースコアの前にバックスラッシュをつけると、そのデータベース名には本当のアンダースコアが含まれているとみなされます。

[6.11] 統計ページにある ø という変わったシンボルの意味は。

「平均」の意味です。

[6.12] エクスポートのオプションについて教えてください。

構造:

データ:

[6.13] 名前にピリオドを含むデータベースを作りたいのですが。

いけません。MySQL の文法では通例データベースとテーブルの名前を参照するのに「database.table」と書きますし、なお悪いことに、MySQL の場合、ピリオド付きのデータベースでもふつう作成はできるのですが、それで作業したり、削除したりができないからです。

[6.14] どうすれば SQL Validator をセットアップできますか。

これを利用するには非常にバージョンの新しい PHP が必要です。4.3.0 がおすすめです。また、 XML、PCRE、PEAR をサポートしている必要があります。お使いのシステムのコマンドラインで、「pear install Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME SOAP」 を実行して、必要な PEAR モジュールを入手しておいてください。
わりと最近のバージョンでは Net_DIME がベータ版だったせいで困らされたものですが、「pear -d preferred_state=beta install -a SOAP」 というコマンドひとつで必要なモジュールはすべてインストールできました。
Validator を使う際にはご注意ください。SQL 文はいずれも匿名の状態で保管されています(データベース/テーブル/カラム名や文字列、数値は、汎用的な値で置き換えられます)。Mimer SQL Validator そのものは © 2001 Upright Database Technology です。私たちはフリーの SOAP サービスとして利用しています。

[6.15] BLOB フィールドを追加して、それにインデックスをつけたいのですが、MySQL に「BLOB column '...' used in key specification without a key length(BLOB カラム「…」をキーにしようとしましたが、キーの長さが指定されていません)」と言われてしまいます。

正しくは、BLOB フィールドをインデックスなしで作成したあと、テーブルの構造を表示します。「インデックスを作成(Create an index)」ダイアログを利用すると、BLOB フィールドを選択して、インデックスにサイズを指定できます。このサイズが BLOB フィールドにインデックスをつくるときの条件なのです。

[6.16] どうしたらたくさんの編集フィールドがあるページで簡単に移動できますか。

編集フィールドが多い(テーブルの構造を変更したり、行を編集したりする)ページではたいてい Ctrl+カーソルキー(Safari の場合は Option+カーソルキー)を使うと移動できるようになっています(設定でこの機能を有効にする必要があります。→ $cfg['CtrlArrowsMoving'])。また、$cfg['DefaultPropDisplay'] ディレクティブの項もご覧ください。「vertical」にしたら編集が楽になるかもしれません。

[6.17] 変換機能:独自の MIME タイプを入力できません! 本当にこの機能は役に立つんですか?

まあまあ、落ち着いて(笑) MIME タイプを定義するだけではダメなんです。変換機能が適用できるようになっていないと、フィールドにコメントがつくだけになってしまいます。独自の MIME タイプを入力できるようにすると文法チェックや検証が大変になりますし、不正な入力をされる危険性も高くなります。それを避けるために、関数を利用する MIME タイプは初期化する必要がありますし、初期化されなかった MIME タイプの定義は削除されるのです。
ちなみに、利用できる MIME タイプの総覧もあります。自由に使いこなせるようになりたいからって、あれだけの MIME タイプを全部暗記する人なんていませんからね。

[6.18] ブックマーク:ブックマークはどこに保管すればよいのでしょう。どうしてクエリボックスの下にブックマークが見あたらないのでしよう。この変数は何のためにあるのでしょう。

実行したクエリはすべて結果が表示されるページにブックマークとして保管できます。「このクエリをブックマークする(Bookmark this query)」というボタンがページ末尾近くにあるはずです。
ブックマークを保管するとすぐにクエリを実行したデータベースに関連づけられ、そのデータベース用のクエリボックスが表示される各ページのドロップダウンからブックマークにアクセスできるようになります。

phpMyAdmin 2.5.0 以降、ブックマーク用の変数も保管できるようになりました。クエリのどこかに /*[VARIABLE]*/ という文字列を入れてください。クエリボックスページの という入力ボックスに入れたすべての値が、保管されているクエリの「/*[VARIABLE]*/」と置き換わります。ただし、有効なクエリを作成する「必要がある」ことにだけはご注意ください。さもないと、クエリをデータベースに保管することすらできなくなります。
また、お忘れなく。/*[VARIABLE]*/ 以外の文字列はすべてそのままクエリに残ります。ただし、/**/ は削除されます。だから、次のような使い方もできます:

/*, [VARIABLE] AS myname */

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

, 変数 as myname

この VARIABLEは入力ボックスに入力した文字列になります。文字列が空の場合、置換は行われません。

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

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

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

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

ひとつのクエリに複数の /*[VARIABLE]*/ を含めることもできます。
「/**/」構文のなかに空白が含まれていないことにご注意ください。ここに挿入された空白はクエリのなかでも後から空白として挿入されますので、予期せぬ結果を生むことがあります。特に「LIKE ''」のなかで変数展開する場合はそうです。
ブックマークとして保管しようとしているおおもとのクエリは最低でも 1 行は結果が出ないとブックマークできませんが、適切な位置に「/**/」コメントを入れることでこの問題を回避できます。

[6.19] エクスポートしたテーブルをインクルードする簡単な LaTeX 文書の作り方は?

LaTeX 文書にテーブルをインクルードすれば簡単にできます。最低限のサンプル文書は次のようになります(エクスポートしたテーブルは table.tex というテーブルに入っているとします):

\documentclass{article} % お望みのクラス
\usepackage{longtable}  % テーブル表示用
\begin{document}        % 文書開始
\include{table}         % エクスポートしたテーブルのインクルード
\end{document}          % 文書終了

[6.20] MySQL 4 に自分のではないデータベースがたくさん見えます。また、そういったデータベースにアクセスできません。

MySQL 4 にアップグレードするとふつうユーザには CREATE TEMPORARY TABLES、SHOW DATABASES、LOCK TABLES といったグローバル特権が与えられるのですが、これらの特権があるとすべてのデータベース名が見えてしまいます。こちらのバグレポートもご覧ください。

というわけで、ユーザにこれらの特権を与える必要がなければ、特権を削除してもかまいません。そうすると、データベースの一覧が短くなります。

[6.21] どうすれば修正/挿入モードで外部テーブルにもとづいたフィールドに入れられる値のリストを見られるようになるのでしょう。

テーブル間に適切なリンクをセットアップする必要があります。また、外部テーブルの「表示するフィールド(display field)」をセットアップする必要もあります。例については FAQ 6.6 をご覧ください。セットアップすると、外部テーブルの値が 200 件以下の場合、値のドロップダウンリストが利用できます。値のリストは 2 組あります。最初のリストはキーと表示するフィールド(display field)、次の組は表示するフィールド(display field)とキーの組み合わせです。このようにしてある理由は、キーでも表示するフィールド(display field)でも、先頭の文字をタイプすれば選択できるようにするためです。

200 件を越えると別ウインドウが開き、外部キーの値が表示されますので、ひとつ選択してください。

[6.22] ブックマーク:テーブルの表示(Browse)モードに入ったときに自動的にデフォルトのブックマークを実行するようにはできますか。

できます。ブックマークのラベルがテーブル名と同じにしておくと実行されます。

[6.23] エクスポート:phpMyAdmin は MS Excel ファイルをエクスポートできると聞いたのですが、どうすればよいのでしょう。

現在のバージョンでは Microsoft Excel と Word のバージョン 2000 以降への直接エクスポートをサポートしています。それ以前のバージョンへエクスポートする必要がある場合は、Microsoft Excel 用の CSV をエクスポートすることもできますし(こちらは何の設定もなしに使えます)、実験的な MS Excel のネイティブエクスポーターを試すこともできます。ただし、ネイティブエクスポートにはいくつかの問題があります。最大の問題はセルの内容が255文字に制限されることと、文字セットをサポートしないことです。ネイティブエクスポートを有効にする場合はよく考えてからにしてください。ネイティブエクスポートを有効にする場合は、$cfg['TempDir'] をウェブサーバのユーザが書き込みできる場所に設定して(たとえば「./tmp」)、php のインクルードパスに PEAR モジュールの Spreadsheet_Excel_Writer をインストールする必要があります。インストールは下記のコマンドでできます:

    pear -d preferred_state=beta install -a Spreadsheet_Excel_Writer

最初のスイッチはモジュールのベータ版(まだ安定版はありません)をインストールすることを、次は pear に依存関係を満足するようにしてもらいたいことを伝えるものです。

PHP をセーフモードで走らせている場合、php.inisafe_mode_include_dir を下記のような PEAR モジュールを置くディレクトリに設定する必要があります:

    safe_mode_include_dir = /usr/local/lib/php

UNIX ベースのシステムで一時ディレクトリを作成するにはこうします:

    cd phpMyAdmin
    mkdir tmp
    chmod o+rwx tmp

[6.24] phpMyAdmin が MySQL 4.1.x ネイティブのカラムコメントをサポートするようになりましたが、pmadb に保存されているカラムコメントはどうなるのでしょう?

あるテーブルの「構造(Structure)」ページに入ったら、自動的にそのテーブルの pmadb スタイルのカラムコメントがネイティブのカラムコメントに移行されます。


[7. phpMyAdmin プロジェクト]

[7.1] バグを見つけました。どうすれば開発陣に伝えられますか。

phpMyAdmin のバグトラッカーが http://sourceforge.net/projects/phpmyadmin/ の Bugs セクションにあります。

ただし、まずは見つけたバグをほかのユーザに話してみてください:
http://sourceforge.net/projects/phpmyadmin/(フォーラムを選択してください)

[7.2] メッセージを別の言語に翻訳したい/既存の翻訳を修正したいのですが、まずはどうすればよいでしょう。

翻訳する言語ファイルはかならず CVS の最新版をお使いください。 新しく翻訳する場合は english-iso-8859-1.inc.php をもとにします。CVS 版の取得方法がわからない場合は開発陣におたずねください。
ご注意ください。phpMyAdmin の翻訳では &eacute; のような HTML エンティティは利用せず、ファイルに適切な文字セットを定義するようにしています。HTML エンティティを使うと JavaScript のメッセージテキストが正しく表示できないためです。ただし、いくつかのエンティティは使う必要があります。クオート(&quot;)、分離されては困るスペース(&nbsp;)、&(&amp;)、<(&lt;)、>(&gt;)です。
翻訳は sourceforge.net の翻訳トラッカーに掲載できます。zip ファイルにして特殊文字が消えないようにしてください。
phpmyadmin-translators メーリングリストに参加するのも良い考えです。ここは私たちが新しいメッセージの翻訳を求める場所にもなっています。

[7.3] phpMyAdmin の開発に協力したいのですが、どのように進めればよいでしょうか。

新規の開発者はなるべく下記の手順にしたがってください:

  1. アノニマス CVS から現在の CVS ツリーを取得します:
    cvs -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmyadmin login
    [パスワード:Enter キーを押すだけで結構です]
    cvs -z3 -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmyadmin checkout phpMyAdmin
    [phpMyAdmin という名前の新しいサブディレクトリができます]
  2. 手を加えます。
  3. 修正したファイル(tar と gzip で圧縮したもの)を SourceForge の phpMyAdmin アカウント 内のパッチトラッカーに入れます。

CVS ツリーへの書込み権は、phpMyAdmin に何かしら有益なものを提供したことのある、経験を積んだ開発者にのみ与えられます。
開発者向けのセクションもご覧ください。


[8. セキュリティ]

[8.1] セキュリティ警告(2003-06-18)

この FAQ の最終更新日:2003-07-22

phpMyAdmin 開発チームは下記のセキュリティ警告を受け取りました。 http://www.securityfocus.com/archive/1/325641

開発陣はこの警告の著者が事前に連絡してくださらなかったことを残念に思っていますが、指摘のあった点について、現在の回答は次の通りです。

[8.2] セキュリティ警告(2004-06-29)

この FAQ の最終更新日:2004-06-30

phpMyAdmin 開発チームは下記のセキュリティ警告を受け取りました。 http://securityfocus.com/archive/1/367486/2004-06-26/2004-07-02/0

重ねて強調しますが、開発陣は報告者が弱点を投稿する前にソフトウェアの著作権者に連絡してくださらなかったことを残念に思っています。このような報告をするときには開発陣が対策をとれるだけの猶予を設けてから公表するのが常道です。

開発陣は、以下のすべての条件が満たされた場合、バージョン 2.5.1 から 2.5.7 までの phpMyAdmin がこの問題の影響を受けることを認めます。


この脆弱性を修正したバージョン 2.5.7-pl1 がリリースされました。

[8.3] 新しいセキュリティ警告について

セキュリティ警告の完全な一覧については http://www.phpmyadmin.net をご覧ください。


開発者向けの情報

phpMyAdmin はオープンソースですから、貢献してくださる方は歓迎します。これまでにもほかの方々が多くのすばらしい機能を書いてくださいました。みなさんにもできることはあります。phpMyAdmin を便利なツールにしていきましょう。

ソースを提供してくださる方は下記の情報をお読みください:


著作権表示


phpMyAdmin - 著作権表示
====================

著作権表示(年代順)
-------------------------------

- Tobias Ratschiller <tobias_at_ratschiller.com>
    * phpmyadmin プロジェクトの創始者
    * 1998 年から 2000 年夏までの管理者

- Marc Delisle <Marc.Delis_at_cegepsherbrooke.qc.ca>
    * 多言語版
    * 修正・改善多数
    * SQL アナライザ(の大半)
    * 現在のプロジェクト管理者

- 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 Allow/Deny
    * DBベースの設定(未完)
    * 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>
    * 「insert as new row」機能

- 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>
    * QBE における自動結合
    * 印刷用表示(printview)における links カラム
    * Relation ビュー

- Michal Čihař <michal_at_cihar.com>
    * インデックス作成/表示機能の強化
    * MySQL とは異なる HTML 文字セットを利用する機能
    * エクスポート機能の改善
    * 追加機能・修正多数
    * チェコ語ファイルの更新

- Christophe Gesché from the "MySQL Form Generator for PHPMyAdmin"
 (http://sourceforge.net/projects/phpmysqlformgen/)
    * 複数テーブルを印刷用表示(printview)するためのパッチを提案

- Garvin Hicking <me_at_supergarv.de>
    * テーブルの行を縦に表示するパッチの作成
    * Javascript ベースの Query ウインドウ + SQL 履歴の作成
    * カラム/データベースコメントの改善
    *(MIME)- カラム変換
    * 左フレームのデータベース(Databases)に独自の別名を利用
    * テーブルの階層/ネスト表示
    * PDF リレーションを WYSIWYG 配布するための PDF スクラッチボード
    * 新しいアイコンセット
    * カラムプロパティページの縦表示
    * バグフィックス、追加機能、サポート、ドイツ語の追加を少々

- Yukihiro Kawada <kawada_at_den.fujifilm.co.jp>
    * 日本語漢字エンコード変換機能

- Piotr Roszatycki <d3xter_at_users.sourceforge.net> and Dan Wilson
    * クッキー認証モード

- Axel Sander <n8falke_at_users.sourceforge.net>
    * テーブルリレーションリンク機能

- Maxime Delorme <delorme.maxime_at_free.fr>
    * PDF スキーマ出力。Olivier Plathey の
     「FPDF」ライブラリ(→ http://www.fpdf.org/)と Steven Wittens の「UFPDF」ライブラリ(→ http://www.acko.net/node/56)にも感謝

- 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 ライブラリ

- Marcel Tschopp <ne0x_at_users.sourceforge.net>
    * mysqli サポート
    * バグフィックス・改善多数

- 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>
    * インタフェースの改善
    * バグフィックス多数

その他、バージョン 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"


バージョン 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 では「Query by Example」
      機能も追加してくださっています。
    - 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.

    また、提案、バグレポート、単なる感想など、私にメールをくださったすべての
    方々に感謝いたします。

この文書の翻訳者

石垣 憲一 (Ishigaki Kenichi) <ishigaki_at_tcool.org>
http://www.tcool.org/


Valid XHTML 1.0!      Valid CSS!