phpMyAdmin 2.7.0-pl2 ドキュメント
必要なもの
-
PHP
- session をサポートしている PHP 4.1.0 以降が必要です(*)
- JPEG 画像のインラインサムネイルを正しいアスペクト比で表示したい場合は PHP が GD2 をサポートしている必要があります。
- phpMyAdmin 2.6.1 以降、外部プログラムを利用する MIME ベースの変換機能を使う場合は PHP 4.3.0 以降が必要となりました。
-
MySQL 3.23.32 以降(詳細)
-
本当に必要なわけではありませんが強く推奨:
「クッキー」認証モードを利用する場合、ウェブサーバに PHP の mcrypt エクステンションを入れておくと、ログイン時にとどまらず、phpMyAdmin で行うすべての操作が速くなります。
-
ウェブブラウザ(そうなんですってば!)
はじめに
phpMyAdmin は MySQL サーバを丸ごと管理できます(スーパーユーザが必要です)。また、単一のデータベースも管理できます。後者の場合は MySQL ユーザを適切にセットアップしてお望みのデータベースのみを読み書きできるようにする必要があるのですが、これはみなさんの方で MySQL マニュアルの適切な箇所をご覧ください。
phpMyAdmin は現在次のことができます:
- データベースの作成と削除
- テーブルの作成・コピー・削除・リネーム・定義の変更
- テーブルのメンテナンス
- フィールドの削除・修正・追加
- あらゆる SQL ステートメントの実行。バッチクエリにも対応
- フィールドのキー管理
- テキストファイルをテーブルにロード
- テーブルのダンプの作成(*)と読み込み
- データを CSV、XML、Latex 形式でエクスポート(*)
- 複数サーバの管理
- MySQL ユーザ・特権の管理
- MyISAM テーブルにおける参照完全性のチェック
- Query-by-example(QBE)を利用して必要なテーブルを自動的に結合する複雑なクエリの作成
- データベースレイアウトの PDF 画像の作成
- データベースないしそのサブセットのグローバル検索
- 一連の定義済み関数を利用して、保存したデータをあらゆる形式に変換(たとえば、BLOB データを画像やダウンロードリンクとして表示できます)。
- InnoDB テーブルと外部キーのサポート(→ FAQ 3.6)
- mysqli という改良版 MySQL エクステンションのサポート(→ FAQ 1.17)
-
50 もの言語に対応
インストール
注意:phpMyAdmin は MySQL データベースサーバに特別なセキュリティをほどこすものではありません。phpMyAdmin を使ったとしても、MySQL データベースに適切なパーミッションを付与するのはやはりシステム管理者の仕事です。ただし、その目的で phpMyAdmin の「特権(Privileges)」ページを使うことはできます。
Mac ユーザ向けの警告:OS X より前のバージョンの MacOS を使うと、解凍の際に StuffIt が Mac 形式にしてしまうため、サーバにアップロードする前に BBEdit で「すべての」phpMyAdmin スクリプトを Unix 風にセーブしなおさなければならなくなります。PHP はどうも Mac 風の改行文字(「\r」)を好まないようなのです。
クイックインストール
- ウェブサーバのドキュメントルートで tar -xzvf phpMyAdmin_x.x.x.tar.gz を実行して配布ファイルを解凍します(サブディレクトリを展開するように解凍してください)。ドキュメントルートに直接アクセスできない場合は、ローカルマシンのディレクトリにファイルを解凍します。ステップ 3 まで済んだらそのディレクトリを FTP などでウェブサーバに転送してください。
- かならずすべてのスクリプトのオーナーを適切に設定してください(PHP がセーフモードになっている場合、スクリプトによってオーナーが異なると問題を起こすことになります)。設定例については FAQ 4.2 をご覧ください。
- お好きなエディタで config.inc.php ファイルを作成し、ホスト、ユーザ、パスワード、認証モードの値をお使いの環境にあわせて記入します。これらのフィールドの定義の仕方については config.default.php をご覧ください。ここで言う「ホスト」は MySQL サーバのことです。「設定」セクションにはすべての値が説明されています。また、認証モードとリンクテーブル構造の情報については引き続きこの「インストール」セクションをご覧ください。
- config認証タイプを利用する場合は phpMyAdmin をインストールしたディレクトリを、たとえば .htaccess ファイルの HTTP–AUTH で保護することをおすすめします。詳しくはこの FAQ のマルチユーザの項、特に FAQ 4.4 をご覧ください。
- ブラウザで<お使いのホスト>/<インストールしたディレクトリ>/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/クッキー認証モードにするのがおすすめです。
ただし、ご注意ください。マイクロソフトの Internet Explorer は、クッキーに関しては本当にバグが多いようです。少なくともバージョン 6 まではそうですし、この分野については PHP 4.1.1 にも!少々バグがあるようです。
また、シングルユーザ環境であっても HTTP/クッキーモードの方が好ましく思えるかもしれません。ユーザ/パスワードの組を設定ファイルに明記しなくてすみますから。
- HTTP/クッキー認証モードの方が安全です:MySQL のログイン情報を phpMyAdmin の設定ファイルに書く必要がありません(「管理ユーザ」は別かもしれませんが)
ただし、お忘れなく。HTTPS プロトコルを使わない限り、パスワードはプレーンテキストのままやりとりされます。
また、クッキーモードでは、パスワードは blowfish アルゴリズムで暗号化されますが、クッキー用の一時ファイルに保管されます。
-
注記:phpMyAdmin 2.6.1 以降、管理ユーザを設定しないと HTTP/クッキー認証が有効にならないのは 4.1.2 より古い MySQL サーバにのみ 適用される話となりました。controluserディレクティブをご覧ください。
「HTTP」/「クッキー」モードでは管理ユーザが必要です。このユーザは mysql.user(「Password」以外の全カラム)、mysql.db(全カラム)、mysql.host(全カラム)、mysql.tables_priv(「Grantor」と「Timestamp」以外の全カラム)テーブルについて、SELECT 特権のみを持つようにします。
また、config.inc.php ファイルの $cfg['Servers'][$i]['controluser'] と $cfg['Servers'][$i]['controlpass'] 項目には管理ユーザの情報を登録しなければなりません
下記の例では pma を管理ユーザ、pmapass を管理パスワードと想定していますが、これはあくまでも例です。ご自分のファイルでは設定を変えてください!
もちろん MySQL サーバのホストがウェブサーバのホストと異なる場合は localhost をウェブサーバのホストで差し替える必要があります。
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT(
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
Execute_priv, Repl_slave_priv, Repl_client_priv
)ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT(Host, Db, User, Table_name, Table_priv, Column_priv)
ON mysql.tables_priv TO 'pma'@'localhost';
MySQL のバージョンが古い場合は(4.0.2 以前)、最初の GRANT SELECT クエリを下記で差し替えてください。
GRANT SELECT(
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv
)ON mysql.user TO 'pma'@'localhost';
また、リレーション/ブックマーク関係の新機能をいろいろ使ってみたい場合は次のようにします。
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
(もちろんリンクテーブル構造を設定しておく必要があります)
もちろん上記のクエリはお使いの MySQL が GRANT コマンドをサポートしていないことにはうまくいきませんので、バージョン 3.22.11 以降の話になります。
-
上記が済んだら、本当のユーザそれぞれについて、特定のデータベースにおける特権を付与していってください。ふつう、一般ユーザにはグローバルな特権を与えるべきではありません。そういった特権の破壊力を理解したうえでのことなら話は別ですが(たとえばスーパーユーザを作るときなど)。
一例として、real_user というユーザに user_base というデータベースに関するすべての特権を付与するには次のようにします。
GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';
こうすることで、そのユーザができることを MySQL のユーザ管理システムが完全に管理できるようになります。
HTTP/クッキー認証モードでは、$cfg['Servers'] 配列のユーザ/パスワードフィールドに値を入れる必要はありません。
「http」認証モード
- 2.2.3 より前のバージョンでは「アドバンスト(advanced)」と呼ばれていました。
- 導入されたのはバージョン 1.3.0 でのことです。基本 HTTP 認証を利用することで、有効な MySQL ユーザのいずれかとしてログインできるようになります。
- PHP が Apache モジュールとして動作している場合に有効です。CGI 版の PHP を利用する IIS (ISAPI) のサポート状況については FAQ 1.32 をご覧ください。
- FAQ 4.4 もご覧ください。「http」認証モードと .htaccess 機構は併用しないようにします。
「クッキー」認証モード
- HTTP 認証のかわりに利用できます(たとえば IIS を走らせている場合など)。
- もちろんユーザがブラウザのクッキーを有効にしている必要があります。
- このモードでは、ユーザが本当に phpMyAdmin からログアウトしたり、同じユーザ名で再ログインしたりできます。
- 任意のサーバにログインしたい場合は、$cfg['AllowArbitraryServer'] ディレクティブをご覧ください。
- 「必要なもの」のセクションにも書いてある通り、mcrypt エクステンションを利用するとアクセス速度がかなり向上します。ただし、これは必須ではありません。
「config」認証モード
設定
Mac ユーザ向けの警告: PHP は Mac の改行文字(「\r」)を好まないようです。かならずテキストエディタで UNIX/Linux の改行文字(「\n」)を使えるようにするオプションを選択してから修正したスクリプトを保存してください。
設定にあたっての注意:
設定可能なデータはほとんどが config.inc.php にあります。このファイルが存在しない場合はクイックインストールの項を参照して作成しておいてください。このファイルには config.default.php で定義されているデフォルト値を変更したいパラメータのみ含めておけば結構です。
(色など)デザイン関係のパラメータは themes/<テーマ名>/layout.inc.php にあります。また、config.footer.inc.php や config.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)。
-
「config」認証
($auth_type = 'config')は昔ながらの簡単な方法です。ユーザ名とパスワードは config.inc.php に保存されます。
-
「cookie」認証モード
($auth_type = 'cookie')は 2.2.3 で導入されました。クッキーの助けを借りることで、あらゆる有効な MySQL ユーザでログインできます。ユーザ名とパスワードは、セッションの間はクッキーに保管されます。セッションが終わるとパスワードは破棄されます。また、$cfg['AllowArbitraryServer'] が有効になっている場合は任意のサーバにログインできます。
-
「http」認証(旧版の「advanced」)
($auth_type = 'http')は 1.3.0 で導入されました。HTTP-Auth を経由することで、あらゆる有効な MySQL ユーザでログインできます。
詳細はインストールセクションの「認証モードの使い方」をご覧ください。
-
$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 ではブックマーククエリを利用できます。よく利用するクエリがある場合は便利です。
この機能を有効にするには、
- pmadb とリンクテーブル構造をセットアップします。
- $cfg['Servers'][$i]['bookmarktable'] にテーブル名を入力します。
-
$cfg['Servers'][$i]['relation'] string
-
リリース 2.2.4 以降、専用の「リレーション」テーブルにどのフィールドが別のテーブルのキー(外部キー)になっているか記述することができるようになりました。phpMyAdmin は現在この機能を次のような用途で使っています。
-
マスタテーブルを閲覧しているときに、外部テーブルを指し示すデータ値をクリックできるようにします。
-
マスタテーブルを閲覧しているときにマウスを外部キーが含まれるカラムに移動すると、「表示するフィールド」というオプションで指定されたツールチップを表示します(「table_info」テーブルも利用します)。
(→ FAQ 6.7)
-
修正/挿入モードでは、外部キーがあれば一覧できるドロップダウンリストを表示します(キーの値と「表示するフィールド」が表示されます)。
(→ FAQ 6.21)
-
テーブルのプロパティページでは、記載されているキーごとに参照の整合性をチェックする(リンクの切れた外部キーを表示する)リンクを表示します。
-
query-by-example では、自動結合を作成します(→ FAQ 6.6)
-
データベースの PDF スキーマを取得できるようにします(table_coords テーブルも利用します)。
キーは数値でも文字でも可です。
この機能を利用できるようにするには、
- pmadb とリンクテーブル構造をセットアップします。
-
$cfg['Servers'][$i]['relation'] にリレーションテーブル名を入れます。
-
通常ユーザとして phpMyAdmin を開き、この機能を使いたいテーブルひとつひとつに対して、「構造/リレーションを表示(Structure/Relation view)」をクリックして、外部フィールドを選択します。
注意してください。現在のバージョンでは、master_db は foreign_db と一致しなければなりません。これらのフィールドは将来クロスデータベースリレーションを開発するために用意されています。
-
$cfg['Servers'][$i]['table_info'] string
-
リリース 2.3.0 以降、対応するキーにカーソルを動かしたときどのフィールドをツールチップとして表示するか、専用の「table_info」テーブルに記述できるようになりました。
この変数はその専用のテーブル名を保持します。
この機能を利用できるようにするには、
- pmadb とリンクテーブル構造をセットアップします。
-
テーブル名を $cfg['Servers'][$i]['table_info'] に入れます。
-
それから、この機能を利用したいテーブルごとに「構造/リレーションを表示/表示するフィールドを選択(Structure/Relation view/Choose field to display)」をクリックして、フィールドを選択します。
使い方のコツ:表示するフィールド
-
$cfg['Servers'][$i]['table_coords'] string
$cfg['Servers'][$i]['pdf_pages'] string
-
リリース 2.3.0 以降、phpMyAdmin はテーブル間のリレーションを表示する PDF ページを作成できるようになりました。このためには「pdf_pages」(作成する PDF ページの情報の保管用)と「table_coords」(PDF スキーマ出力の際に各テーブルが配置される座標の保管用)というふたつのテーブルが必要となります。
また、「リレーション」機能を使っていなければなりません。
この機能を利用するには、
- pmadb とリンクテーブル構造をセットアップします。
-
$cfg['Servers'][$i]['table_coords'] と $cfg['Servers'][$i]['pdf_pages'] に正しいテーブル名を入れます。
使い方のコツ:PDF 出力
-
$cfg['Servers'][$i]['column_info'] string
-
リリース 2.3.0 以降、テーブルごとに各コラムの説明を保管できるようになりました。このコメントは「印刷用表示」の際に表示されます。
リリース 2.5.0 以降、テーブルのプロパティページやテーブルの表示機能でもコメントを利用するようになりました。カラム名の上に表示されるツールチップ(プロパティページ)や表示機能のテーブルヘッダに埋め込まれます。また、テーブルをダンプする際に表示することもできます。後述の関連ディレクティブもご覧ください。
また、リリース 2.5.0 の新機能として、MIME 変換システムがありますが、これも以下のテーブル構造をベースにしています。詳しくは「変換機能」をご覧ください。MIME 変換システムを利用する際は、column_info テーブルに「mimetype」、「transformation」、「transformation_options」というフィールドを新たに付け加える必要があります。
この機能を利用できるようにするには、
- pmadb とリンクテーブル構造をセットアップします。
-
$cfg['Servers'][$i]['column_info'] にテーブル名を入れます。
-
2.5.0 より前の Column_comments テーブルを更新するには次のようにします。
ALTER TABLE `pma_column_comments`
ADD `mimetype` VARCHAR( 255 )NOT NULL ,
ADD `transformation` VARCHAR( 255 )NOT NULL ,
ADD `transformation_options` VARCHAR( 255 )NOT NULL ;
また、忘れずに config.inc.php の変数を
$cfg['Servers'][$i]['column_comments'] から $cfg['Servers'][$i]['column_info'] にリネームします。
-
$cfg['Servers'][$i]['history'] string
-
リリース 2.5.0 以降、SQL の履歴(phpMyAdmin インタフェースに手入力したすべてのクエリ)を保管できるようになりました。テーブルベースの履歴は利用したくない場合、JavaScriptベースの履歴を利用することもできます。この場合、ウインドウを閉じるとすべての履歴が削除されます。
$cfg['QueryHistoryMax'] を使うと保持しておきたい履歴アイテムの数を指定できます。このリストはログインのたびに上限値にまで切り詰められます。
クエリの履歴を利用できるのはブラウザの JavaScript が有効になっている場合のみです。
この機能を利用できるようにするには、
- pmadb とリンクテーブル構造をセットアップします。
-
$cfg['Servers'][$i]['history'] にテーブル名を入れます。
-
$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 フィールドを保護して修正できないようにするかどうかを定義します。
有効な値は次の通りです:
- FALSE すべてのフィールドの修正を許可します。
- blob BLOB 以外のすべてのフィールドの修正を許可します。
- all すべての BINARY フィールドと BLOB フィールドの修正を不許可にします。
- $cfg['ShowFunctionFields'] boolean
-
修正/挿入モードで MySQL 関数フィールドを表示するかどうかを定義します。
- $cfg['CharEditing'] string
-
CHAR フィールドと VARCHAR フィールドでどちらの編集用コントロールを利用するか定義します。可能な値は次の通りです:
-
input - テキストのサイズを MySQL のフィールドのサイズまでに制限できますが、フィールドに改行があると問題になります。
-
textarea - フィールドに改行があっても問題ありませんが、長さの制限はできません。
デフォルトは昔ながらの 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 文書のタイプです:
- viewable - 「オンラインで閲覧可能」。現在MySQLのウェブサイトで利用されているものです。
- searchable - 「検索可能。ユーザのコメントがついています(Searchable, with user comments)」
- chapters - 「HTML 文書。章ごとにページがわかれています(HTML, one page per chapter)」
- big - 「HTML 文書。すべてが 1 ページに収められています(HTML, all on one page)
- none - 文書へのリンクを表示しません。
- $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 - 自動的に利用可能なものを利用します(まずは iconv を、次に recode を試します)
- iconv - iconv ないし libiconv 関数を利用します
- recode - recode_string 関数を利用します
デフォルトは auto です。
- $cfg['IconvExtraParams'] string
-
文字セット変換で利用する iconv 向けのパラメータを指定します。詳しくは iconv のドキュメント をご覧ください。
- $cfg['AvailableCharsets'] array
-
MySQL 変換で利用できる文字セットです。(recode/iconv がサポートしているものを)自分で追加したり、使わないものを削除したりもできます。文字セットはこのリストと同じ順番で表示されますので、頻繁に使うものは先頭に移してください。
- $cfg['GD2Available'] string
-
GD ≧ 2 が利用できるかどうかを指定します。利用できる場合、MIME 変換の際に活用できます。
可能な値は次の通りです:
-
auto - 自動検知します。php < 4.3.0 の場合はやや重い処理になりますので、お使いのサーバの実態にあわせて変更しておく方がよいでしょう。
- yes - GD 2 関数を利用できます。
- no - GD 2 関数は利用できません。
デフォルトは 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 の色コード | 空の文字列]
空の文字列を指定した場合、そのクラスの色指定は無視されてスタイルシートに反映されません。クラス名は変えないでください。変えるのは色をあらわす文字列のみです。
クラス名:
- comment コメントのサブクラスすべてに適用されます。
- comment_mysql 「#...\n」 形式のコメント
- comment_ansi 「-- ...\n」 形式のコメント
- comment_c 「/*...*/」 形式のコメント
- digit 数値のサブクラスすべてに適用されます。
- digit_hex 16進数値
- digit_integer 整数値
- digit_float 浮動小数点表記の数値
- punct 句読点のサブクラスすべてに適用されます。
- punct_bracket_open_round 開き括弧 「 ( 」
- punct_bracket_close_round 閉じ括弧 「 ) 」
- punct_listsep 列挙の区切り文字 「 , 」
- punct_qualifier テーブル/カラムの修飾子 「 . 」
- punct_queryend クエリの終端マーク 「 ; 」
- alpha アルファベットのクラスすべてに適用されます。
- alpha_columnType カラム種別に一致する識別子
- alpha_columnAttrib データベース/テーブル/カラム属性に一致する識別子
- alpha_functionName MySQL 関数名に一致する識別子
- alpha_reservedWord その他の予約語に一致する識別子
- alpha_variable SQL 変数 「 @foo 」に一致する識別子
- alpha_identifier その他すべての識別子
- quote 引用符のクラスすべてに適用されます。
- quote_double ダブルクオート "
- quote_single シングルクオート '
- quote_backtick 逆クオート `
- $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)」という名がついています。
- 「MIME タイプ(MIME-type)」フィールドはドロップダウンになっています。選択肢としては、フィールドを空にしておくか、「auto」にできます[この機能はまだ実装されていません]。ご注意ください。MIME タイプ(MIME-type)を選択しないと変換機能は有効になりません。
- 「ブラウザ変換(Browser transformation)」フィールドはドロップダウンになっています。そのうち数が増えていくであろう定義済みの変換機能を選択できます。自前の変換機能の作り方については下記をご覧ください。
変換機能にはグローバルなものと、MIME タイプに固有のものとがあります。グローバルな変換機能はどの MIME タイプでも利用できます(必要がある場合は MIME タイプも考慮します)。MIME タイプに固有の変換機能はふつう特定の MIME タイプのみを操作します。(「image」のように)MIME の主タイプを操作するものはたいていサブタイプを考慮に入れますが、特定のサブタイプ(「image/jpeg」など)のみを操作するものもあります。
変換機能は関数が定義されていない MIME タイプでも利用できますが、正しい変換機能を選択したかどうかというセキュリティチェックはありませんので、出力結果がどうなるかにはご注意ください。
- 「変換オプション(Transformation options)」フィールドは自由に入力できるテキストフィールドです。変換用の関数特有のオプションはここに入力しなければなりません。ふつう変換機能はデフォルトのオプションで動作しますが、一般的に概略を読んでどんなオプションが必要になるか知っておくと便利です。
ENUM/SET フィールドの場合と同じように、複数のオプションがある場合は 'a','b','c',...(空白がないことに注意)のような形式で分割する必要があります。これは、内部的には配列に分解して、最初の要素には最初の値が入るようにするためです。
MIME 文字セットを指定したい場合は変換オプションで定義できますが、これはその MIME 変換機能にもとから定義されているオプションとは別に、オプションの最後に置く必要があります。書式は「'; charset=XXX'」です。オプションを 2 つ指定できる変換機能に文字セットを付け加えたいなら、「'最初のパラメータ','二番目のパラメータ','charset=us-ascii'」のように入力します。もっとも、「'','','charset=us-ascii'」のように、パラメータについてはデフォルトの値を利用することもできます。
[3. ファイル構造]
各 MIME タイプ用の変換機能の定義はすべて「libraries/transformations/」ディレクトリのそれぞれのファイルにまとめられています。
変換機能がファイルに保管されているのは、カスタマイズや新しい変換機能の追加を容易にするためです。
ユーザが独自の MIME タイプを入力することはできません。変換機能がいつでも確実に動作するのはそのおかげです。ある変換機能を未知の MIME タイプに適用しようとしても無駄です。変換関数は処理の方法を知らないためです。
ただし、MIME タイプを空欄にしてグローバルな変換機能を利用することはできます。グローバルな変換機能は多くの MIME タイプで動作することが期待できます。本来の対象とは違う MIME タイプの変換機能を利用することもできますが、オプションの使い方や、その変換機能がフィールドの値をどうするかにはご注意ください。
「global.inc.php」という基本ファイルは、どんな変換機能からでもインクルードできます。これはいくつかの基本的な関数を提供してくれます。
ファイル名には 5 通りの可能性があります:
- MIME タイプ+サブタイプ変換機能:
[MIME タイプ]_[サブタイプ]__[機能名].inc.php
MIME タイプとサブタイプが「_」で区切られていることにご注意ください(「_」はMIME タイプやサブタイプの名前には含まれないことになっています)。また、変換機能/ファイル名に含められる文字は、ファイルシステムや PHP 関数の命名規約上問題を起こさない文字のみです。
この変換関数は「PMA_transform_[MIME タイプ]_[サブタイプ]__[機能名]()」で呼び出せます。
例:
text_html__formatted.inc.php
PMA_transform_text_html__formatted()
- MIME タイプ(サブタイプなし)変換機能:
[MIME タイプ]__[機能名].inc.php
1 文字の「_」がないことにご注意ください。
変換機能/ファイル名に含められる文字は、ファイルシステムや PHP 関数の命名規約上問題を起こさない文字のみです。
この変換関数は「PMA_transform_[MIME タイプ]__[機能名]()」で呼び出せます。
例:
text__formatted.inc.php
PMA_transform_text__formatted()
- MIME タイプ+サブタイプ。特定な変換関数はなし
[MIME タイプ]_[サブタイプ].inc.php
ファイル名に「__」が含まれないことにご注意ください。また、ファイル名にはファイルシステム上問題を起こす特殊文字は使わないでください。
このファイルそのものには変換関数は定義しません。
例:
text_plain.inc.php
(関数はなし)
- MIME タイプ(サブタイプなし)。特定の変換関数はなし
[mimetype].inc.php
ファイル名に「_」の文字が含まれないことにご注意ください。また、ファイル名にはファイルシステム上問題を起こす特殊文字は使わないでください。
このファイルそのものには変換関数は定義しません。
例:
text.inc.php
(関数はなし)
- グローバル変換関数。特定の 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 つの変数が渡されます:
- $buffer - カラム内のテキストが入ります。これが変換するテキストになります。
- $options - ユーザから変換関数に渡されたオプションが配列で入ります。
- $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.php、header_printview.inc.php、index.php、left.php、libraries/common.lib.php の DOCTYPE 宣言(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.ini の upload_tmp_dir 変数に定義されている「アップロードディレクトリ(upload dir)」に保存されます(通常システムデフォルトは /tmp になっています)。
Apache サーバをセーフモードで走らせる場合は次のようにセットアップすることをおすすめします。こうすると、ファイルのアップロードを可能にしながらある程度のセキュリティも確保できます:
- アップロード用のディレクトリを別に作ります:
mkdir /tmp/php
- Apache サーバのユーザ/グループをオーナーします:
chown apache.apache /tmp/php
- 適切なパーミッションを設定します: chmod 600 /tmp/php
- php.ini に upload_tmp_dir = /tmp/php を追加します。
- 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 の古いバージョンでは User/Password フィールドが user/password という名前だったせいです。フィールド名を現在の標準にあわせて修正してください。
[1.16] (メモリ、http、タイムアウトのせいで)大きなダンプファイルをアップロードできません。
バージョン 2.7.0 以降はインポートエンジンが書き直されたため、この問題は起こらないはずです。可能であればお使いの phpMyAdmin を最新のバージョンにアップグレードして新しいインポート機能をご利用ください。
まずは php.ini 設定ファイルの upload_max_filesize、memory_limit、post_max_size の値をチェックしてください(あるいはプロバイダにチェックしてもらってください)。この 3 つの設定はいずれも PHP 経由で送信/取り扱いできるデータサイズの上限を決めるものです。また、あるユーザによると、post_max_size と memory_limit も upload_max_filesize より大きい必要があるそうです。
アップロードファイルが大きすぎる、あるいはホスティングしてもらっているプロバイダが設定を変えたがらない場合にはいくつかの対策があります。
- $cfg['UploadDir'] 機能をご覧ください。この機能を使うと、SCPやFTPといったお好みの転送法でファイルをサーバにアップロードできるようになります。ファイルをアップロードしたら、PhpMyAdmin はその一時ディレクトリからファイルをインポートできるようになります。詳しくはこのドキュメントの設定セクションをご覧ください。
- (BigDumpのような)ユーティリティを利用してアップロードの前にファイルを分割する方法もあります。このユーティリティはもとより、サードパーティ製のアプリケーションは一切サポートできませんが、そういったものを利用して成功したユーザがいることは承知しています。
- シェル(コマンドライン)にアクセスできるのであれば、MySQL を利用して直接ファイルをインポートする方法もあります。その場合は MySQL の中で「source」コマンドを使ってください:source filename.sql
[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.so か php_mysql.dll のはずですが、phpMyAdmin はこのエクステンションをロードしようとして失敗しているわけです。
ふつう、この問題は「PHP-MySQL」とかなんとかという名前のソフトウェアパッケージをインストールすれば解決します。
[1.21] CGI 版の PHP を Unix 環境で走らせているのですが、クッキー認証を使ったログインができません。
php.ini の mysql.max_links を 1 より大きな値にしてください。
[1.22] 「テキストファイルの場所(Location of text file)」フィールドが見つからないのでアップロードできません。
いちばんありがちな理由は、php.ini の file_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 で確認しました。
- お使いの php.ini ファイルに cgi.rfc2616_headers = 0 という設定を加えます。
- Web サイトの「プロパティ」 -> 「ディレクトリセキュリティ」タブ -> 「匿名アクセスおよび認証コントロール」の「編集」で表示されるダイアログボックスで、匿名アクセスのチェックボックスをチェック、それ以外のチェックボックスのチェックを外します(つまり、基本認証, 統合 Windows 認証、有効になっている場合はダイジェスト認証のチェックを外します)。OKをクリックします。
- 「カスタムエラー」タブで、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 FollowSymLinks と AllowOverride 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 がどのソケットを利用しているか確認する必要があります。
手順は次の通りです。telnet でサーバに接続して、MySQL bin ディレクトリに移動します。このディレクトリには mysqladmin というファイルがあるはずです。./mysqladmin variables とタイプすると、MySQL サーバの情報がたくさん表示されるはずです。そのなかに、ソケットの情報も書いてあります(たとえば /tmp/mysql.sock)
-
次に、PHP にそのソケットを利用するよう伝える必要があります。
phpMyAdmin で指定するなら、config.inc.php にソケットの情報をもれなく記入する必要があります。
例:
$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
また、このファイルのパーミッションを確かめて、ウェブサーバが読み込みできるようにしてください(「0755」など)。
また、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'] が有効の場合、メインページで好みのテーマを選択できます。選択したテーマはクッキーに保管されます。
テーマの作り方:
- $cfg['ThemePath'](デフォルトでは themes)ディレクトリの下に新しいサブディレクトリ(たとえば「your_theme_name」)を作ります
- 「original」から「your_theme_name」にファイルやディレクトリをコピーします
- 「your_theme_name/css」の css ファイルを編集します。
- 「your_theme_name/img」に新しい画像を入れます。
- 「your_theme_name」の layout.inc.php を編集します。
- 「your_theme_name」の info.inc.php を編集して、選択したテーマ名を入れます。このテーマ名がユーザインタフェースに表示されます。
- テーマのスクリーンショットを新規作成して、「your_theme_name/screen.png」に保存します。
テーマディレクトリの info.inc.php というファイルにはテーマの長い名前、テーマの世代、テーマのバージョンを入れます。このバージョンと世代は 1 から始まる数字です。また、phpMyAdmin のバージョンと直接の関係はありません。同じ世代のテーマは後方互換性があるようにしてください。つまり、バージョン 2 のテーマはバージョン 1 が必要な phpMyAdmin でもうまくいくようにしてください。世代の異なるテーマは互換性がありません。
独自のシンボルやボタンを使いたいのでなければ、「your_theme_name」から「img」ディレクトリを削除してください。デフォルトの(システムテーマである「original」の)アイコンやボタンが使われます。
[2.8] 「Missing parameters(パラメータが抜けています)」というエラーが出ます。どうしたらよいのでしょう?
確認すべき点はいくつかあります:
-
config.inc.php の $cfg['PmaAbsoluteUri'] ディレクティブを空にしてみてください。また FAQ 4.7 もご覧ください。
-
インストールされている PHP が壊れているか、Zend Optimizer をアップデートする必要があるのかもしれません。http://bugs.php.net/bug.php?id=31134 をご覧ください。
-
Hardened PHP を使っていて、ini の varfilter.max_request_variables ディレクティブがデフォルトの値(200)ないしそのような低い値になっている場合、テーブルのカラム数が多いとこのエラーが出ることがあります。適切な値に調整してください(ヒントをくれた Klaus Dorninger に感謝)。
-
php.ini の arg_separator.input ディレクティブの値が「;」だとこのエラーになります。「&;」に差し替えてください。
[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 認証ないしクッキー認証機能を使った方がよいでしょう。
提案:
-
config.inc.php ファイルは chmod 660 しておいてください。
-
phpMyAdmin ファイルはすべて chown -R phpmy.apache しておいてください。ここでいう phpmy にはあなただけがパスワードを知っているユーザ、apache には Apache を実行しているグループが入ります。
-
PHP はセーフモードにしてください。そうすると、ほかのユーザのスクリプトにあなたの config.inc.php をインクルードされてしまうことが防げます。
[4.3] /lang や /libraries のファイルをインクルードできないというエラーが出ます。
php.ini をチェックしてください(あるいは、システム管理者にチェックしてもらってください)。include_path のどこかに「.」が含まれている必要があります。また、open_basedir を使う場合は「.」と「./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 ブロックに含まれないネットワークからログインするのを防ぐものです。
//プライベートネットワーク以外からのログインをブロックします
$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 1