FAQ - よくある質問

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

サーバ

1.1 サーバが度々クラッシュします。その度に、特定のアクションを要求されたり、ブラウザに空白のページや暗号のような文字だらけのページが表示されます。どうしたらよいのでしょうか?

config.inc.php ファイルの $cfg['OBGzip'] ディレクティブを false に、PHP の設定ファイルの zlib.output_compression 設定を Off にしてみてください。

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

まず、 Apache (および MySQL) の最新のバージョンを使用してみてください。それでもサーバがクラッシュするようなら、Apache の各種サポートグループに助けを求めてください。

1.3 (取り下げ)。

1.4 phpMyAdmin を IIS 上で使うと、 "The specified CGI application misbehaved by not returning a complete set of HTTP headers ..." というエラーメッセージが表示されます。

PHP の配布ファイルに入っている install.txt を読み忘れたのでしょう。 PHP の公式バグデータベースから PHP バグレポート #12061 を見てみてください。

1.5 phpMyAdmin を IIS 上で使うと、 HTTP においてクラッシュしたり、エラーメッセージがたくさん表示されます。

これは PHP の ISAPI フィルタの既知の問題です。あまり安定していません。代わりにクッキー認証モードをお使いください。

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

This seems to be a PWS bug. Filippo Simoncini found a workaround (at this time there is no better fix): remove or comment the DOCTYPE declarations (2 lines) from the scripts src/Header.php and index.php.

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

これらの機能はプラットフォーム (Unix か Windows か、セーフモードかどうか、など) からの独立性を高めるために PHP の gzencode() 関数に基づいています。そのため、Zlib サポート (--with-zlib) が必要です。

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

アップロードされたファイルは PHP によって、 php.ini の変数 upload_tmp_dir で定義された "upload dir" の中に保存されます (ふつうシステムのデフォルトは /tmp です)。セーフモードで動作している Apache サーバには、以下のセットアップを行い合理的に安全であるファイルのアップロードを有効化することをお勧めします。

  • mkdir /tmp/php でアップロード用の別なディレクトリを作ります
  • chown apache.apache /tmp/php で所有者を Apache サーバのユーザ/グループにします
  • chmod 600 /tmp/php で適切なパーミッションを設定します
  • php.iniupload_tmp_dir = /tmp/php を追加します
  • Apache を再起動します

1.9 (取り下げ)。

1.10 セキュアサーバ上で稼動させている phpMyAdmin のファイルアップロードで困っています。ブラウザは Internet Explorer で、 Apache サーバを使っています。

phpWizard フォーラムで "Rob M" が勧めていたように、httpd.conf に以下の行を追加してください。

SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

こうすると、Internet Explorer と SSL にまつわる多くの問題が解決されるようです。

1.11 インポートタブからファイルをアップロードすると 'open_basedir 制限' が出ます。

バージョン 2.2.4 以降、phpMyAdmin はサーバの open_basedir 制限をサポートしています。しかしながら、一時ディレクトリを作成して、 $cfg['TempDir'] にそのディレクトリを設定する必要があります。アップロードしたファイルはそこに移され、 SQL コマンドの実行が終わったら削除されます。

1.12 MySQL の root のパスワードをなくしてしまいました。どうしたらよいのでしょうか?

phpMyAdmin は使用している MySQL サーバに対して認証を行いますので、 phpMyAdmin のパスワードを紛失した場合は、 MySQL レベルで復旧する必要があります。

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

ホスティングプロバイダによってインストールされた MySQL サーバを使用している場合は、そのサポートに連絡してパスワードを回復してください。

1.13 (取り下げ)。

1.14 (取り下げ)。

1.15 mysql.user のカラム名で問題が発生しました。

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

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

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

まずは php.ini 設定ファイルの max_execution_time, upload_max_filesize, memory_limit, post_max_size の値を確認してください (あるいはプロバイダに確認してもらってください)。この 3 つの設定はいずれも PHP 経由で送信/取り扱いできるデータサイズの上限を決めるものです。また、 post_max_sizeupload_max_filesize より大きくなければなりません。アップロードが大きすぎたり、ホスティングプロバイダが設定を変更したくない場合は、いくつかの回避策があります。

  • $cfg['UploadDir'] 機能をご覧ください。この機能を使うと、SCP や FTP といったお好みの転送法でファイルをサーバにアップロードできるようになります。ファイルをアップロードしたら、phpMyAdmin はその一時ディレクトリからファイルをインポートできるようになります。詳しくはこのドキュメントの 設定 をご覧ください。

  • (BigDump のような) ユーティリティを利用してアップロードの前にファイルを分割する方法もあります。このユーティリティはもとより、サードパーティ製のアプリケーションは一切サポートできませんが、そういったものを利用して成功したユーザがいることは承知しています。

  • シェル (コマンドライン) にアクセスできるのであれば、MySQL を利用して直接ファイルをインポートする方法もあります。その場合は MySQL の中で "source" コマンドを使ってください。

    source filename.sql;
    

1.17 phpMyAdmin が対応しているデータベースのバージョンは?

MySQL では、バージョン 5.5 以降に対応しています。古い MySQL のバージョンに対しては、 Downloads ページで古いバージョンの phpMyAdmin を提供しています (サポートが切れているかもしれません)。

MariaDB はバージョン 5.5 以降に対応しています。

1.17a MySQL サーバに接続できません。かならず "Client does not support authentication protocol requested by server; consider upgrading MySQL client" というエラーメッセージが返ってきます

古い MySQL クライアントライブラリで MySQL にアクセスしようとしています。 MySQL クライアントライブラリのバージョンは phpinfo() の出力でチェックできます。一般に、 1.17 phpMyAdmin が対応しているデータベースのバージョンは? で示したマイナーバージョン以上のサーバを使用してください。この問題は一般的に 4.1 以上のバージョンの MySQL で起こります。MySQL の認証ハッシュが変わったのに、お使いの PHP が古い方法を試そうとするためです。この問題を適切に解決するには、お使いの MySQL のバージョンに合わせた適切なクライアントライブラリの mysqli 拡張モジュール を使用するようにしてください。詳細 (とその対策) については MySQL のドキュメント をご覧ください。

1.18 (取り下げ)。

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

この機能を実現するのに利用している TCPDF ライブラリは、いくつかの特別なファイルがないとフォントを利用できません。 TCPDF マニュアル を参照してこれらのファイルを構築してください。

1.20 mysqli や mysql 拡張モジュールがないというエラーが出ます。

PHP が MySQL サーバに接続する際には「MySQL 拡張モジュール」という MySQL の関数セットを必要とします。この拡張は PHP の配布ファイルに含まれている (コンパイルで組み込まれている) こともありますが、そうでない場合、動的に読み込む必要があります。拡張名はおそらく mysqli.sophp_mysqli.dll ですが、phpMyAdmin はこの拡張モジュールを読み込もうとして失敗しています。通常、この問題は "PHP-MySQL" または同様の名前のソフトウェアパッケージをインストールすることで解決できます。

PHP が MySQL 拡張モジュールとして提供しているインタフェースは、 mysqlmysqli の 2 つがありました。 mysql インタフェースは PHP 7.0 で削除されました。

この問題は php.ini に間違ったパスが指定されていたり、間違った php.ini を使用していたりすると発生することもあります。

拡張機能のファイルが extension_dir が指すフォルダに存在し、 php.ini の対応する行がコメントアウトされていないことを確認してください (現在の設定を確認するには phpinfo() が利用できます)。

[PHP]

; Directory in which the loadable extensions (modules) reside.
extension_dir = "C:/Apache2/modules/php/ext"

php.ini は (特に Windows では) 複数の場所から読み込まれる可能性がありますので、正しいものを更新していることを確認してください。 Apache を使用している場合、 PHPIniDir ディレクティブを使用してこのファイルに特定のパスを使用するように指示できます。

LoadModule php7_module "C:/php7/php7apache2_4.dll"
<IfModule php7_module>
    PHPIniDir "C:/php7"
    <Location>
       AddType text/html .php
       AddHandler application/x-httpd-php .php
    </Location>
</IfModule>

まれにこの問題は、 PHP に読み込まれている他の拡張モジュールが MySQL 拡張モジュールの読み込みを妨げていることで発生することもあります。まだ失敗する場合は、 php.ini から他のデータベースの拡張モジュールをコメントアウトしてみてください。

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

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

1.23 MySQL を Win32 マシンで稼動させているのですが、新規テーブルを作成するたびにテーブル名とカラム名が小文字に変わってしまいます!

これは MySQL の設定項目の lower_case_table_names が Win32 版のデフォルトでは 1 (ON) になっているためです。この動作はこの設定を 0 (OFF) に変更するだけで変えられます。おそらく Windows ディレクトリにある my.ini ファイルを編集し、 [mysqld] グループに次の行を追加するだけです。

set-variable = lower_case_table_names=0

注釈

大文字と小文字の区別のないファイルシステムで --lower-case-table-names=0 を用いてこの変数を 0 に強制的に設定し、 MyISAM にアクセスして大文字と小文字が異なるテーブル名を使用すると、インデックスが競合する可能性があります。

次に、そのファイルを保存して MySQL サービスを再起動します。このディレクティブの値は次のクエリでいつでもチェックできます。

SHOW VARIABLES LIKE 'lower_case_table_names';

1.24 (取り下げ)。

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

Jose Fandos からのヒントとして、 httpd.conf に下記の 2 行があったら、以下のようにコメントにしてください。

# mod_gzip_item_include file \.php$
# mod_gzip_item_include mime "application/x-httpd-php.*"

このバージョンの Apache (Windows) の mod_gzip には、PHP スクリプトの扱いに問題があるからです。もちろん、上記の変更を行ったら Apache を再起動する必要があります。

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

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

1.27 巨大なページ (例えば、多くのテーブルある db_structure.php) を表示しようとすると空白ページが表示されます。

これは PHP のバグ で、GZIP 出力バッファリングが有効になっていると発生します。これ (config.inc.php の中の $cfg['OBGzip']) をオフにすれば動作するはずです。このバグは PHP 5.0.0 で修正されました。

1.28 MySQL サーバがときどきクエリを拒否して「Errorcode: 13」というメッセージを返してきます。どういうことでしょうか?

これは MySQL のバグです。 lower_case_table_names が 1 になっているのにデータベース/テーブル名に大文字が含まれていると起こることがあります。修正するには、この設定をオフにして、すべてのデータベース/テーブル名を小文字に変換してから、再度オンにしてください。また、MySQL 3.23.56 / 4.0.11-gamma からはバグフィックスも用意されています。

1.29 テーブルを作成したりカラムを編集したりすると、エラーが出てカラムが複製されてしまいます。

Apache の設定によっては PHP が .php ファイルの解釈を間違ってしまうことがあります。

この問題が起こるのは、下記のように 2 組の異なった (矛盾をきたす) 設定項目を使用しているためです。

SetOutputFilter PHP
SetInputFilter PHP

および

AddType application/x-httpd-php .php

私たちが見たある例では、一方の設定が /etc/httpd/conf/httpd.conf に、もう一方の設定が /etc/httpd/conf/addon-modules/php.conf に入っていました。推奨される方法は AddType なので、前者の両方の行をコメントアウトして Apache を再起動します。

#SetOutputFilter PHP
#SetInputFilter PHP

1.30 "navigation.php: Missing hash" というエラーが出ます。

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

1.17 phpMyAdmin が対応している MySQL のバージョンは?

リリース 4.5 以降は、 phpMyAdmin は PHP 5.5 以降のみに対応しています。リリース 4.1 の phpMyAdmin は PHP 5.3 以降のみに対応しています。 PHP 5.2 は、リリース 4.0.x を使用することができます。

phpMyAdmin 4.6 以降は PHP 7 に対応しています。 PHP 7.1 は 4.6.5 以降で対応しており、 PHP 7.2 は 4.7.4 以降で対応しています。

HHVM は phpMyAdmin 4.8 まで対応しています。

Since release 5.0, phpMyAdmin supports only PHP 7.1 and newer. Since release 5.2, phpMyAdmin supports only PHP 7.2 and newer. Since release 6.0, phpMyAdmin supports only PHP 8.1 and newer.

1.32 IIS で HTTP 認証を利用できますか?

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

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

参考

RFC 2616

1.33 (取り下げ)。

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

はい。そのままでも http://server/phpMyAdmin/index.php?server=X&db=database&table=table&target=script のような URL を利用することができます。 server 引数には、 config.inc.php で参照した数値のホスト番号 ($i より) を使用することができます。 table と script の部分はオプションです。

http://server/phpMyAdmin/database[/table][/script] のような URL を使いたい場合は、さらにいくつかの設定をする必要があります。以下の例は Apache ウェブサーバにしか適用できません。まずはグローバル設定でいくつかの機能を有効にしてあることを確認してください。 phpMyAdmin をインストールしたディレクトリについては Options SymLinksIfOwnerMatchAllowOverride FileInfo を有効にする必要がありますし、mod_rewrite を有効にしておく必要もあります。あとは、以下のような .htaccess ファイルを phpMyAdmin をインストールした場所のルートフォルダに作成する必要があります (忘れずにディレクトリ名を修正してください)。

RewriteEngine On
RewriteBase /path_to_phpMyAdmin
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&table=$2&target=$3 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&target=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ index.php?db=$1&table=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)$ index.php?db=$1 [R]

バージョン 5.1.0 で変更: target 引数を使用した対応は phpMyAdmin 5.1.0 で削除されました。代わりに route 引数を使用してください。

1.35 Apache の CGI で HTTP 認証が使用できますか?

はい。ただし、以下のリライト規則を使用して、 CGI へ認証用変数を渡す必要があります。

RewriteEngine On
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

1.36 "500 Internal Server Error" というエラーが出ます。

これには多くの要因があり、サーバのエラーログファイルを見れば手がかりが得られる場合があります。

1.38 Suhosin が有効になっているサーバ上で phpMyAdmin を使うことはできますか?

はい。ただし、Suhosin のデフォルトの設定値は、一部の操作で問題があることが知られています。例えば、多くのカラムを持っていて 主キー がないテーブルや、文字列の 主キー を持っているテーブルの編集などです。

Suhosin の設定はいくつかのケースでは誤動作につながる可能性があります。phpMyAdmin は 1 回の HTTP リクエスト内で多量のカラムの転送を必要とするアプリケーションであり、Suhosin は HTTP リクエストに対して何らかの防止を行おうとするものであるため、この問題を完全に回避することはできません。一般的に、すべての suhosin.request.*suhosin.post.*suhosin.get.* の設定項目は、phpMyAdmin の使用に対して悪影響を与えます。Suhosin によって削られた変数が発生したかをエラーログで確認できるので、この問題を診断して設定がうまく合うように調整することができます。

Suhosin の設定オプションのほとんどは、デフォルト値で大抵の状況において動作するでしょう。ただし、少なくとも以下のパラメータは調整することをお勧めします。

さらにセキュリティを高めるため、以下のとおり変更することをお勧めします。

$cfg['SuhosinDisableWarning'] 設定を使用して警告を無効にすることもできます。

1.39 https を経由して接続すると、ログインすることはできますが、接続が http にリダイレクトされてしまいます。この挙動の原因は何ですか?

これは、サイトが https を使用していることを PHP スクリプトが認識していないことが原因です。使用するウェブサーバに応じて、アクセスに使用する URL とスキームについて PHP に通知するように構成する必要があります。

たとえば Apacheでは、設定で SSLOptionsStdEnvVars が有効になっていることを確認してください。

1.41 データベースを表示してその権限を参照しようとすると、未知のカラムに関するエラーが表示されます。

MySQL サーバの権限テーブルが最新の状態ではありません。サーバ上で mysql_upgrade コマンドを実行する必要があります。

1.42 ロボットから phpMyAdmin へのアクセスを防ぐにはどうすればいいのでしょうか?

.htaccess に、ユーザエージェントフィールドに基づいてアクセスをフィルタリングするルールを追加することができます。防ぐ手立てとしてはきわめて簡単な方法ですが、少なくともいくつかの検索ロボットからは防ぐことが可能です。

RewriteEngine on

# Allow only GET and POST verbs
RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR]

# Ban Typical Vulnerability Scanners and others
# Kick out Script Kiddies
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pikto|scan|acunetix).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]

# Ban Search Engines, Crawlers to your administrative panel
# No reasons to access from bots
# Ultimately Better than the useless robots.txt
# Did google respect robots.txt?
# Try google: intitle:phpMyAdmin intext:"Welcome to phpMyAdmin *.*.*" intext:"Log in" -wiki -forum -forums -questions intext:"Cookies must be enabled"
RewriteCond %{HTTP_USER_AGENT} ^.*(AdsBot-Google|ia_archiver|Scooter|Ask.Jeeves|Baiduspider|Exabot|FAST.Enterprise.Crawler|FAST-WebCrawler|www\.neomo\.de|Gigabot|Mediapartners-Google|Google.Desktop|Feedfetcher-Google|Googlebot|heise-IT-Markt-Crawler|heritrix|ibm.com\cs/crawler|ICCrawler|ichiro|MJ12bot|MetagerBot|msnbot-NewsBlogs|msnbot|msnbot-media|NG-Search|lucene.apache.org|NutchCVS|OmniExplorer_Bot|online.link.validator|psbot0|Seekbot|Sensis.Web.Crawler|SEO.search.Crawler|Seoma.\[SEO.Crawler\]|SEOsearch|Snappy|www.urltrends.com|www.tkl.iis.u-tokyo.ac.jp/~crawler|SynooBot|crawleradmin.t-info@telekom.de|TurnitinBot|voyager|W3.SiteSearch.Crawler|W3C-checklink|W3C_Validator|www.WISEnutbot.com|yacybot|Yahoo-MMCrawler|Yahoo\!.DE.Slurp|Yahoo\!.Slurp|YahooSeeker).* [NC]
RewriteRule .* - [F]

1.43 数百のカラムがあるテーブルの構造を表示できないのはなぜですか?

PHP の memory_limit が小さすぎるからです。 php.ini で調整してください。

1.44 phpMyAdmin のディスク上のインストールサイズを減らすにはどうすればいいですか?

一部のユーザから、 phpMyAdmin のインストールサイズを縮小する要求があります。これは推奨できず、不足している機能について混乱を招く可能性がありますが、実行することはできます。削除すると安全に機能を削減できるファイルと対応する機能の一覧は次の通りです。

  • ./locale/ フォルダ、または、使用されていないサブフォルダ (インタフェースの翻訳)
  • Any unused themes in ./public/themes/ except the default theme pmahomme.
  • ./libraries/language_stats.inc.php (翻訳統計)
  • ./doc/ (ドキュメント)
  • ./setup/ (セットアップスクリプト)
  • ./examples/ (構成例)
  • ./sql/ (拡張機能を設定するための SQL スクリプト)
  • ./js/src/ (./js/dist/ を再ビルドするためのソースファイル)
  • ./js/global.d.ts JS 型宣言ファイル
  • rm -rv vendor/tecnickcom/tcpdf && composer dump-autoload --no-interaction --optimize --dev を実行してください (PDF へのエクスポート)
  • rm -rv vendor/williamdes/mariadb-mysql-kbs && composer dump-autoload --no-interaction --optimize --dev を実行してください。 (MariaDB および MySQL のドキュメントへの外部リンク)
  • rm -rv vendor/code-lts/u2f-php-server && composer dump-autoload --no-interaction --optimize --dev を実行してください。 (U2F 二要素認証)
  • rm -rv vendor/pragmarx/* && composer dump-autoload --no-interaction --optimize --dev を実行してください (2FA 二要素認証)
  • rm -rv vendor/bacon/bacon-qr-code && composer dump-autoload --no-interaction --optimize --dev を実行してください (QR コード生成による 2FA 二要素認証)

1.45 ログインしようとすると、 caching_sha2_password が不明な認証方法であることに関するエラーメッセージが表示されます

MySQL バージョン 8 以降を使用してログインすると、次のようなエラーメッセージが表示される場合があります。

mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]

mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

このエラーは、 PHP と MySQL 間のバージョン互換性の問題が原因です。 MySQL プロジェクトは新しい認証方法を導入しました (私たちのテストによれば、バージョン 8.0.11 から始まりました) が、 PHP にはその認証方法を使用する機能が含まれていませんでした。 PHPは、これが PHP バージョン 7.4 で修正されたことを報告しています。

これに遭遇したユーザは、 PHP インストールをアップグレードすることをお勧めしますが、回避策があります。次のようなコマンドで、 MySQL ユーザアカウントが古い認証を使用するように設定することができます。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

設定

2.1 "Warning: Cannot add header information - headers already sent by ..." というエラーメッセージが表示されます。何が問題なのですか?

config.inc.php ファイルを修正して、先頭の <?php タグの前にも末尾の ?> タグの後にも何もない (すなわち、改行、スペース、文字などがない) ようにしてください。

2.2 phpMyAdmin が MySQL に接続できません。何が悪いのでしょうか?

PHP のセットアップに問題があるか、ユーザ名/パスワードが間違っているかのどちらかです。 mysql_connect を使う小さなスクリプトを書いて、動くかどうか確かめてみてください。動かないようなら、PHP をコンパイルするときに MySQL の対応を組み込んでいなかったのかもしれません。

2.3 "Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) ..." というエラーメッセージが表示されます。どうすればよいのでしょうか?

エラーメッセージは Error #2002 - The server is not responding (or the local MySQL server's socket is not correctly configured) となることもあります。

まず、 MySQL で使用されているソケットを特定する必要があります。これを行うには、サーバに接続し、 MySQL の bin ディレクトリに移動します。このディレクトリには、 mysqladmin という名前のファイルがあります。 ./mysqladmin variables と入力すると、 MySQL サーバに関する一連の情報が得られ、その中にソケット (例えば /tmp/mysql.sock) が含まれています。 ISP に接続情報を要求することもできます。自分自身でホスティングしている場合は、コマンドラインクライアント 'mysql' から接続し、 'status' と入力すると、接続タイプとソケットまたはポート番号が取得できます。

次に、このソケットを使用するように PHP に指示する必要があります。これを php.ini 内で行うとすべての PHP が対象となり、 config.inc.php 内で行うと phpMyAdmin に対してのみ実行できます。例えば、 $cfg['Servers'][$i]['socket'] です。また、このファイルのパーミッションがウェブサーバで読み取り可能であることを確認してください。

私の RedHat-Box では、MySQL のソケットは /var/lib/mysql/mysql.sock です。 php.ini に次のような行がありますから

mysql.default_socket = /tmp/mysql.sock

これを次のように変更してください

mysql.default_socket = /var/lib/mysql/mysql.sock

それから apache を再起動すれば動くはずです。

MySQL ドキュメントの対応する部分 も読んでください。

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

phpMyAdmin の設定ファイルで $cfg['OBGzip'] の設定項目を false に設定してみてください。これが役立つかもしれません。また、PHP のバージョン番号を確かめてください。 "b" または "alpha" という文字が含まれている場合はテスト版の PHP が稼動しているということです。これはあまりよいことではありませんので、テスト版でないものにアップグレードしてください。

2.6 localhost にポート転送しているホストの MySQL サーバにアクセスしようとすると、 "Access denied for user: 'root@localhost' (Using password: YES)" というエラーが出ます。

ポート転送を介して別のホストにリダイレクトするローカルホスト上のポートを使用している場合、 MySQL は期待どおりにローカルホストを解決できません。 Erik Wasser は「解決策は次のとおりです。ホストが "localhost" の場合 MySQLは (コマンドラインツール mysql も) 常にソケット接続を使用して処理を高速化しようとします。そして、それはポート転送を備えたこの構成では機能しません。ホスト名として "127.0.0.1" を入力すると、すべてが正しくなり、 MySQL はその TCP 接続を使用します。」と説明しています。

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

カスタムテーマ を参照してください。

2.8 "Missing parameters" というエラーが出ます。どうしたらよいのでしょうか?

確認すべき点がいくつかあります。

  • config.inc.php の中で、 $cfg['PmaAbsoluteUri'] の設定項目を空欄にしてみてください。 4.7 認証ウインドウが複数回表示されます。なぜでしょうか? も参照してください。
  • インストールされている PHP が壊れているか、Zend Optimizer を更新する必要があるかもしれません。<https://bugs.php.net/bug.php?id=31134> を参照してください。
  • Hardened PHP を使っていて、ini の設定項目 varfilter.max_request_variables がデフォルト値 (200) などの低い値になっている場合、テーブルのカラム数が多いとこのエラーが出ることがあります。適切な値に調整してください (ヒントをくれた Klaus Dorninger に感謝)。
  • php.ini の設定項目 arg_separator.input の値が ";" であった場合はこのエラーになります。 "&;" に置き換えてください。
  • If you are using Suhosin, you might want to increase request limits.
  • php.ini の設定項目 session.save_path で指定したディレクトリが、存在しないか読み取り専用になっている (これは PHP インストーラのバグ によって起こります)。

2.9 アップロード進行状況バーが見えるようにする

アップロード中に進行状況バーを表示できるようにするには、サーバが uploadprogress 拡張に対応している、もしくは PHP 5.4.0 以降である必要があります。それに加えて、PHP において JSON 拡張モジュールが有効になっていなければなりません。

PHP 5.4.0以降を使用している場合は、 php.inisession.upload_progress.enabled1 に設定する必要があります。ただし、 phpMyAdmin バージョン 4.0.4 以降、問題のある動作のため、セッションベースのアップロードの進捗状況は一時的に非アクティブ化されています。

2.10 ランダムなバイト列を生成するには

暗号に適したランダムなバイト列を生成する方法の1つに、 PHPrandom_bytes<https://www.php.net/random_bytes> 関数を使用する方法があります。この関数はバイナリ文字列を返すので、返す値をコピーできるようにする前に印刷可能な形式に変換しておく必要があります。

例えば、 $cfg['blowfish_secret'] 設定ディレクティブでは、32バイト長の文字列を要求します。次のコマンドを使用すると、この文字列の16進数表現を生成することができます。

php -r 'echo bin2hex(random_bytes(32)) . PHP_EOL;'

上記の例では、次のようなものが出力されます。

f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851

そして、この16進数の値を設定ファイルで使用することができます。

$cfg['blowfish_secret'] = sodium_hex2bin('f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851');

ここでは、`sodium_hex2bin<https://www.php.net/sodium_hex2bin>`_ 関数を使用して、16進数の値をバイナリ形式へ戻しています。

既知の制限

3.1 HTTP 認証を使っているときにログアウトすると、同じユーザ名では再ログインできません。

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

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

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

3.3 InnoDB テーブルでテーブルやカラムの名称を変更すると外部キーのリレーションが切れます。

これは InnoDB のバグです。 <http://bugs.mysql.com/bug.php?id=21704> を参照してください。

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

この問題は、古いバージョンの mysqldump が次のような無効なコメントを作成するためです。

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

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

3.5 入れ子になったフォルダを使用すると、複数の階層が間違った方法で表示されます。

区切り文字列を文字なしで複数回使用したり、テーブル名の最初や最後に使用したりしないでください。必要な場合は、別の TableSeparator を使用するか、その機能を無効にすることを検討してください。

3.6 (取り下げ)。

3.7 カラム数の多い(100 以上)テーブルがあるのですが、このテーブルを表示しようとすると "Warning: unable to parse url" というエラーがたくさん出ます。どうすれば直るのでしょうか?

テーブルに 主キーユニークキー もない場合は、行を特定するために長い式を使う必要があります。これが parse_url 関数で問題を起こしています。解決策は、 主キーユニークキー を作成することです。

3.8 カラムに MIME 変換を適用したら、 (クリック可能な) HTML フォームが使えません!

phpMyAdmin が結果を表示するテーブルは (複数行削除チェックボックス用の) フォームコンテナに囲まれているため、その中に入れ子にするフォームを置くことはできません。ただし、 tbl_row_delete.php を対象とした親フォームのコンテナはそのまま残して、その中に独自の入力要素のみ加えるようにすれば、どんなフォームでもテーブルの中に入れることができます。送信用の input フィールドをカスタマイズすると、フォームのデータは表示しているページに再送されますので、変換機能のなかで $HTTP_POST_VARS を有効にしてください。 変換機能の効果的な使い方のチュートリアルについては、 phpMyAdmin の公式ホームページの Link の部分 をご覧ください。

3.9 MySQL サーバに "--sql_mode=ANSI" を適用するとエラーメッセージが出ます。

MySQL が ANSI 互換モードで実行されているときは、 SQL の組み立て方に大きく変わる部分があります (<https://dev.mysql.com/doc/refman/5.7/ja/sql-mode.html> を参照)。とりわけ重要なのが、引用符 (") が識別子を囲む文字として解釈され、文字列を囲む文字とはみなされなくなることです。そのため、 phpMyAdmin 内部の多くの操作が無効な SQL 文になるのです。この動作には回避策がありません。この問題についての最新情報は issue #7383 に投稿されます。

3.10 主キーがなく、同じ表記がある場合。 SELECT の結果、同じ値を持つカラムが複数表示された場合 (例えば SELECT lastname from employees where firstname like 'A%' を実行して "Smith" という値が 2 つ表示された場合)、編集をクリックしても意図した通りの行を編集しているのか分かりません。

テーブルに 主キー を設定するようにしてください。そうすると phpMyAdmin は編集や削除のリンクに主キーを使用するようになります。

3.11 InnoDB のテーブルの行数が正しくありません。

phpMyAdmin は簡潔な方法で行数を取得していますが、この方法では InnoDB テーブルの場合に概数しか返ってきません。この結果を修正する方法は $cfg['MaxExactCount'] を参照してください。ただし、これは性能に深刻な影響を与える可能性があります。もっとも、概算の行数をクリックすると、正確な行数に簡単に置き換えることができます。これは、最下部に表示されている行数の合計値をクリックすれば、すべてのテーブルを一度に更新できます。

3.12 (取り下げ)。

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

我々が MySQL 5.1.49 で行ったテストでは、API がそのような構文の USE コマンドを認めていないことを確認しています。

3.14 SELECT 権限を持っていないカラムが 1 つでもあると、テーブルを参照することができません。

これは初期の頃から phpMyAdmin の制限として知られており、将来的に解決される見込みはありません。

3.15 (取り下げ)。

3.16 (取り下げ)。

3.17 (取り下げ)。

3.18 複数のテーブルを含む CSV ファイルをインポートすると、単一のテーブルにまとめられてしまいます。

CSV 形式の中で複数のテーブルを区分する確実な方法はありません。当分の間は、複数のテーブルを含む CSV ファイルを分割する必要があります。

3.19 ファイルをインポートすると、 phpMyAdmin は int、 decimal、 varchar 型のみを使用してデータ構造を定めてしまいました。

現在、インポート時の型の検出システムは、これらの MySQL 型しかカラムに割り当てません。将来的にはさらに追加される可能性がありますが、当面はインポート後に必要に応じて構造を編集する必要があります。また、 phpMyAdmin は、特定のカラムにある最大のサイズの要素を、適切な型のカラムサイズとして使用することに注意してください。その列に大きな要素を追加することがわかっている場合は、それに応じてカラムのサイズを手動で調整する必要があります。これは効率のために行われます。

3.20 アップグレード後、一部のブックマークがなくなったり、内容が表示されなかったりします。

ある時点で、ブックマークの内容の保存に使用される文字セットが変更されました。新しい phpMyAdmin のバージョンでブックマークを再作成することをお勧めします。

3.21 á などの Unicode 文字を含むユーザ名でログインすることができません。

これは、 MySQL サーバがデフォルトの文字セットとして UTF-8 を使用するように設定されていない場合に発生する可能性があります。これは、 PHP と MySQL サーバの相互作用の制限です。 PHP が認証前に文字セットを設定する方法はありません。

ISP やマルチユーザのインストール

4.1 当方は ISP です。 phpMyAdmin のセントラルコピーを一つだけセットアップするようにできますか?それとも顧客ごとにインストールする必要がありますか?

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

4.2 phpMyAdmin を悪意のあるアクセスから守るようにするお勧めの方法はありますか?

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

お勧めの方法:

  • config.inc.php ファイルは chmod 660 にしておいてください。
  • phpMyAdmin ファイルはすべて chown -R phpmy.apache を実行しておいてください。ここで phpmy にはあなただけがパスワードを知っているユーザ、 apache には Apache を実行しているグループ名が入ります。
  • PHP およびウェブブラウザのセキュリティ推奨事項に従ってください。

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

php.ini を確認するか、システム管理者に確認を依頼するかしてください。 include_path には "." を含める必要があり、 open_basedir を使用する場合は、 phpMyAdmin の通常の操作を許可するためには "." および "./lang" を含める必要があります。

4.4 HTTP 認証を使用すると必ず「Access denied (アクセスは拒否されました)」になります。

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

  • $cfg['Servers'][$i]['controluser']$cfg['Servers'][$i]['controlpass'] が間違っている。
  • ログインダイアログで指定したユーザ名/パスワードが無効である。
  • phpMyAdmin ディレクトリに別のセキュリティ機構がセットアップされている (例えば .htaccess ファイル)。これは phpMyAdmin の認証の邪魔になりますので除去してください。

4.5 ユーザに独自のデータベースの作成を許可することはできますか?

バージョン 2.2.5 以降、ユーザ管理ページでユーザのデータベース名にワイルドカードを入れたり (例えば「joe%」)、権限を与えることができるようになりました。例えば、 SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER 権限を与えれば、ユーザが自分のデータベースを作成/管理できるようになります。

4.6 どうすればホストベースの認証の追加指定を利用できますか?

古い .htaccess ファイルに既存のルールがある場合は、それを持ってきて 'deny'/'allow''from' の文字列の間にユーザ名を加えてください。ユーザ名にワイルドカード '%' が使えるようになっている場合はとても便利です。それが済んだら、あとは更新した行を $cfg['Servers'][$i]['AllowDeny']['rules'] 配列に加えるだけです。

できあいのサンプルが欲しい場合は、下記をお試しください。これは ’root' ユーザがプライベートネットワークの IP ブロックに含まれないネットワークからログインするのを防ぐものです。

//block root from logging in except from the private networks
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] = [
    'deny root from all',
    'allow root from localhost',
    'allow root from 10.0.0.0/8',
    'allow root from 192.168.0.0/16',
    'allow root from 172.16.0.0/12',
];

4.7 認証ウインドウが複数回表示されます。なぜでしょうか?

これは phpMyAdmin を起動するために使用した URL が、 $cfg['PmaAbsoluteUri'] に設定されている URL と異なるためです。例えば、 "www" が抜けていたり、設定ファイルではドメイン名で登録してあるのに IP アドレスで入力した場合などです。

4.8 phpMyAdmin を起動する URL 使うことができるパラメータはどれですか?

phpMyAdmin の起動時には、 dbserver の引数を使用することができます。最後のものにはホストのインデックス番号 (設定ファイルの $i) または設定ファイル内にあるホスト名のどちらかを指定することができます。

例えば、特定のデータベースに直接ジャンプするには、 URL を https://example.com/phpmyadmin/?db=sakila のように構築することができます。

バージョン 4.9.0 で変更: pma_usernamepma_password 引数を使用した対応は phpMyAdmin 4.9.0 で削除されました (PMASA-2019-4 を参照)。

ブラウザまたはクライアント OS

5.1 カラム数が 14 を超えるテーブルを作ろうとすると、メモリ不足のエラーが出てコントロールが動作しなくなります。

この問題は Win98/98SE 環境下でしか再現できませんでした。 WinNT4 や Win2K 環境下でテストすると 60 を超えるカラムでも簡単に作成できました。回避策はカラム数を減らして作成し、それからテーブルのプロパティに戻って、残りのカラムを追加することです。

5.2 Xitami 2.5b4 を使うと phpMyAdmin がフォームのフィールドを処理しなくなります。

これは phpMyAdmin の問題ではなく、Xitami の既知のバグです。フォームを使うスクリプトやウェブサイトすべてで起こる問題です。 Xitami サーバをアップグレードまたはダウングレードしてください。

5.3 Konqueror でうまくテーブルをダンプできません (phpMyAdmin 2.2.2)。

Konqueror 2.1.1 の場合、無圧縮、 zip、 gzip のダンプは動作します。ただし、ダンプで提案されるファイル名は常に、 'tbl_dump.php' となります。 bzip2 のダンプは動作しないようです。 Konqueror 2.2.1 の場合、無圧縮のダンプは動作します。 zip ダンプはユーザの一時ディレクトリに置かれますので、 Konqueror を閉じる前に移動しないと消滅します。 gzip ダンプはエラーメッセージが出ます。 Konqueror 2.2.2 ではテストが必要です。

5.5 (取り下げ)。

5.6 (取り下げ)。

5.7 ブラウザで再読み込み (リロード) すると、ようこそページに戻ってしまいます。

ブラウザによっては再読み込みしたいフレームのなかで右クリックできますので、右フレームのなかで右クリックして再読み込みしてください。

5.8 Mozilla 0.9.7 では、クエリボックスで修正したクエリをうまく送信できません。

Mozilla のバグのようです。0.9.6 では OK でした。Mozilla の将来のバージョンでも注意していきます。

5.9 Mozilla の 0.9.? 〜 1.0 と Netscape 7.0-PR1 では SQL クエリの編集領域で空白を入力できません。ページがスクロールダウンしてしまいます。

これは Mozilla のバグです (<a href="http://bugzilla.mozilla.org/">BugZilla</a> のバグ #26882 を参照)。

5.10 (取り下げ)。

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

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

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

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

5.13 (取り下げ)

5.14 (取り下げ)

5.15 (取り下げ)

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

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

  • config.inc.php$cfg['PmaAbsoluteUri'] の設定を IP アドレスに設定して、ドメイン名を含む URL で phpMyAdmin を起動しているか、またはその逆の状況になっているかもしれません。
  • IE や Microsoft Security Center のセキュリティ設定が高すぎるためにスクリプトの実行をブロックされている。
  • Windows Firewall が Apache と MySQL をブロックしていること。 "in" と "out" の両方で HTTP のポート (80 または 443) と MySQL のポート (通常は 3306) が開いている必要があります。

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

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

5.18 (取り下げ)

5.19 ブラウザで JavaScript エラーが発生します。

ブラウザの拡張機能をいくつか組み合わせた場合の問題だと報告されています。トラブルを解決するには、すべての拡張機能を無効にしてブラウザのキャッシュをクリアし、問題が発生しなくなるかを確認してください。

5.20 Content Security Policy 違反のエラーが出ます。

次のようなエラーが発生した場合です。

Refused to apply inline style because it violates the following Content Security Policy directive

これは通常、 Content Security Policy ヘッダを不正に書き換えるソフトウェアが原因で発生します。通常、これはそのようなエラーを引き起こしているアンチウイルスプロキシまたはブラウザアドオンによって引き起こされます。

これらのエラーが表示された場合は、ウイルス対策ソフトの HTTP プロキシを無効にするか、 Content Security Policy の書き換えを無効にしてみてください。それでも問題が解決しない場合は、ブラウザ拡張機能を無効にしてみてください。

または、サーバの構成の問題である可能性もあります (ウェブサーバが Content Security Policy ヘッダを発行するように構成されている場合、 phpMyAdmin のヘッダをオーバーライドする可能性があります)。

次のプログラムがこの種のエラーを引き起こすことが知られています。

  • カスペルスキーインターネットセキュリティ

5.21 テーブルを参照したり、 SQL クエリを実行したりすると、安全でない可能性のある操作に関するエラーが発生します。

次のようなエラーが発生した場合です。

A potentially unsafe operation has been detected in your request to this site.

これは通常、リクエストフィルタリングを行うウェブアプリケーションファイアウォールが原因で発生します。 SQL インジェクションを防止するためのものですが、 phpMyAdmin は SQL クエリを実行するように設計されたツールであるため、使用できなくなるものです。

ウェブアプリケーションファイアウォールの設定で phpMyAdmin のスクリプトを許可するか、 phpMyAdmin のパスに対して完全に無効にするかしてください。

次のプログラムがこの種のエラーを引き起こすことが知られています。

  • Wordfence Web Application Firewall

phpMyAdmin の使用

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

SQL のエラーを注意深く調べてみてください。よく問題になるのが、カラムのデータ型の指定を間違ていることです。よくある間違いには次のようなものがあります。

  • VARCHAR を size 引数なしで使用している
  • TEXT または BLOB に size 引数をつけて使用している

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

6.2 テーブルを作るときに2つのカラムにインデックスを設定したのですが、phpMyAdmin がその2つのカラムに1つしかインデックスを生成しません。

これは、複数カラムのインデックスの作り方です。インデックスを2つ作りたいときは、テーブルを作成するときに最初のインデックスを作り、保存してから、テーブルのプロパティを表示し、インデックスのリンクをクリックして次のインデックスを作るようにしてください。

6.3 テーブルに NULL 値を挿入するにはどうするのですか?

バージョン 2.2.3 以降、 null にできるカラムにはそれぞれチェックボックスが用意されています。 2.2.3 より前は、カラムの値として引用符なしで "null" と入力する必要がありました。バージョン 2.5.5 以降では、本当の NULL 値を得るにはチェックボックスを使う必要があります。 "NULL" 入力すると、そのカラムには NULL 値ではなく、文字で NULL が入ります(これは PHP4 の動作です)。

6.4 データベースやテーブルのバックアップはどうするのですか?

ナビゲーションパネルでデータベース名またはテーブル名をクリックすると、プロパティが表示されます。次に、メニューの [エクスポート] をクリックすると、構造、データ、またはその両方をダンプすることができます。これにより、データベース/テーブルの再作成に使用できる標準の SQL ステートメントが生成されます。 phpMyAdmin が結果のダンプを端末に送信できるように、 [ファイルとして保存] を選択する必要があります。 PHP の構成に応じて、ダンプを圧縮するオプションが表示されます。 $cfg['ExecTimeLimit'] 構成変数も参照してください。このテーマに関する追加のヘルプについては、このドキュメントで「ダンプ」という単語を探してください。

6.5 どうすればダンプからデータベースやテーブルを復元 (アップロード) できますか?どうすれば ".sql" ファイルを実行できますか?

ナビゲーションパネルでデータベース名をクリックすると、プロパティが表示されます。右側のフレームのタブのリストから [インポート] を選択します (または、 phpMyAdmin のバージョンが 2.7.0 より前の場合は [SQL])。 [テキストファイルの場所] の節で、ダンプファイル名へのパスを入力するか、 [参照] ボタンを使用します。次に、 [実行] をクリックします。バージョン 2.7.0 では、インポートエンジンが書き直されています。可能であれば、新しい機能を利用するためにアップグレードすることをお勧めします。このテーマに関する追加のヘルプについては、このドキュメントで「アップロード」という単語を探してください。

注: 古いバージョンの MySQL からエクスポートされたダンプを新しいバージョンの MySQL にインポートする際にエラーが発生した場合は、 6.41 古いバージョンの MySQL (5.7.6より前) からエクスポートされたダンプを新しいバージョンの MySQL (5.7.7 以降) にインポートしているときにインポートエラーが発生します。同じ古いバージョンにインポートすると正常に動作するのに? を確認してください。

6.6 どうすれば定型問い合わせの際にリレーションテーブルを使えるのでしょうか?

これは、 "mydb" データベースにあるテーブル persons, towns, countries の例です。 pma__relation テーブルがない場合は、構成の節の説明に従って作成してください。次に、サンプルテーブルを作成します。

CREATE TABLE REL_countries (
country_code char(1) NOT NULL default '',
description varchar(10) NOT NULL default '',
PRIMARY KEY (country_code)
) ENGINE=MyISAM;

INSERT INTO REL_countries VALUES ('C', 'Canada');

CREATE TABLE REL_persons (
id tinyint(4) NOT NULL auto_increment,
person_name varchar(32) NOT NULL default '',
town_code varchar(5) default '0',
country_code char(1) NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM;

INSERT INTO REL_persons VALUES (11, 'Marc', 'S', 'C');
INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C');

CREATE TABLE REL_towns (
town_code varchar(5) NOT NULL default '0',
description varchar(30) NOT NULL default '',
PRIMARY KEY (town_code)
) ENGINE=MyISAM;

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

適切なリンクと表示情報をセットアップするには、以下のようにします。

  • "REL_persons" テーブルの [構造] をクリックし、次に [リレーションビュー] をクリックする
  • "town_code" については、データベース、テーブル、カラムの各ドロップダウンでそれぞれ "mydb", "REL_towns", "town_code" を選択する
  • "country_code" については、データベース、テーブル、カラムの各ドロップダウンでそれぞれ "mydb", "REL_countries", "country_code" を選択する
  • "REL_towns" テーブルの [構造]、次に [リレーションビュー] をクリックする
  • [表示するカラムを選択 ] 欄で "description" を選択する
  • "REL_countries" テーブルについて直前の2つの手順を繰り返す

それから、以下のようにテストをします。

  • ナビゲーションパネルでデータベース名をクリックする
  • [クエリ] を選択する
  • persons, towns, countries の各テーブルを使用する
  • [クエリを更新する] をクリックする
  • カラムの行で persons.person_name を選択し、 [表示] チェックボックスをクリックする
  • 残り 2 つのカラムの towns.description と countries.descriptions についても同様にする
  • [クエリを更新する] をクリックすると、クエリボックスに正しく結合が生成されたことが分かる
  • [クエリを実行する] をクリックする

6.7 どうすれば [表示するカラム] 機能が利用できますか?

前の例に引き続き、「構成」の章で説明されているように pma__table_info を作成した後、 persons テーブルを表示して、 town code または country code の上にマウスを移動します。 「列の表示」がドロップダウンの利用な可能な値を有効にするための追加機能については、 6.21 編集/挿入モードで、外部のテーブルに基づいた利用可能なカラムの値の一覧を見るにはどうすればよいでしょうか? も参照してください。

6.8 データベースの PDF スキーマを作るにはどうするのですか?

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

  • ナビゲーションパネルでデータベースを選択する。
  • 上部のナビゲーションバーで [デザイナ] を選択する。
  • 好きなようにテーブルを動かします。
  • 左のメニューから [スキーマのエクスポート] を選択してください。
  • エクスポートのモーダルが開きます。
  • エクスポートの種類を PDF に選択し、その他の設定を調整することができます。
  • フォームを送信すると、ファイルのダウンロードが始まります。

6.9 phpMyAdmin がカラムのデータ型を変えてしまいます!

これは MySQL が 暗黙のカラム指定の変更 を行うためです。

6.10 権限を作成するとき、データベース名にアンダースコアを入れるとどうなりますか?

アンダースコアの前に をつけないと、ワイルドカードの扱いとなり、アンダースコアは「任意の 1 文字」を表します。従って、データベース名が "john_db" の場合、そのユーザは john1db、john2db … への権限を得ることになります。アンダースコアの前に を付けた場合は、データベース名に実際のアンダースコアがあることを意味します。

6.11 統計ページにある ø という変わった記号は何ですか?

「平均」の意味です。

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

構造:

  • 「DROP TABLE を追加する」は、インポート中に既存のテーブルが存在していたら そのテーブルを削除する よう MySQL に指示する行を追加します。エクスポート後にテーブルを削除するわけではなく、インポートファイルにのみ影響します。
  • "IF NOT EXISTS” は、テーブルが存在しないときのみ作成します。設定されていない場合、既に存在するテーブル名で異なる構造を指定した場合にエラーになることがあります。
  • 「AUTO_INCREMENT 値を追加する」は、 (あれば) AUTO_INCREMENT 値もバックアップに含めるようにします。
  • 「テーブルやカラムの名前を逆クォートで囲む」は、特殊文字を含むカラム名やテーブル名を保護します。
  • 「コメントの追加」は、 pmadb に設定されているカラムのコメント、リレーション、メディア型を SQL のコメント文の形 (/* xxx */) でダンプに含めます。

データ:

  • 「完全な INSERT 文を作成する」は、すべての INSERT コマンドにカラム名を付与して、より詳しく記述します (ただし、結果のファイルは大きくなります)。
  • 「長い INSERT 文を作成する」は、ダンプファイルを短くするために INSERT の述語とテーブル名を一度しか使わないようにします。
  • 「遅延インサートを使用する」については、 MySQL マニュアル - INSERT DELAYED 構文 の説明をご覧ください。
  • 「INSERT IGNORE を使用する」は、エラーを警告として扱います。こちらも、詳しくは MySQL マニュアル - INSERT 構文 にありますが、これを選択すると、基本的に無効な値があった場合に文全体を失敗とするのではなく、値を調整して挿入が行われます。

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

これは良くないことです。 MySQL の構文では通例データベースとテーブルの名前を参照するのに "database.table" と書きますし、さらに悪いことに、 MySQL ではピリオドがついたデータベースを作成することはできるものの、使用したり削除したりすることができません。

6.14 (取り下げ)。

6.15 BLOB のカラム追加して、それにインデックスをつけたいのですが、 MySQL が "BLOB column '...' used in key specification without a key length" と報告します。

これを行う正しい方法は、インデックスなしでカラムを作成し、テーブル構造を表示して「インデックスを作成」ダイアログを使用することです。このページ上で BLOB カラムを選択し、インデックスにサイズを指定できます。これは、BLOBカラムにインデックスを作成するための条件です。

6.16 どうしたら多くの編集項目があるページ内で簡単に移動できますか?

多くのページでは Ctrl+矢印 (Safari では Option+矢印) を使用することで、たくさんの編集フィールド (テーブルの構造の変更、行の編集など) を移動することができます。

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

メディア型に変換を加えることができない場合、メディア型を定義しても意味がありません。カラムにコメントを付けることができるだけです。独自のメディア型を入力すると、深刻な構文チェックの問題と検証が発生するため、これにより、リスクの高い誤ったユーザ入力状況が発生します。代わりに、関数または空のメディア型定義を使用してメディア型を初期化する必要があります。

加えて、利用できるメディア型の一覧もあります。誰もこれらのメディア型を覚えて、入力できるわけではありませんよね?

6.18 ブックマーク: ブックマークはどこで保管できますか?どうしてクエリボックスの下にブックマークがないのでしょうか?この変数は何でしょうか?

ブックマーク機能を使用するには、 phpMyAdmin 環境保管領域 を構成しておく必要があります。それが済んだら、 SQL タブでブックマークを使用できます。

6.19 エクスポートされたテーブルを含めるための簡単な LATEX ドキュメントを作成するにはどうすればよいですか?

LATEX ドキュメントにテーブルをインクルードすれば簡単にできます。最小限のサンプルドキュメントは次のようになります (エクスポートしたテーブルが table.tex というファイルに入っているとします)。

\documentclass{article} % or any class you want
\usepackage{longtable}  % for displaying table
\begin{document}        % start of document
\include{table}         % including exported table
\end{document}          % end of document

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

あなたはグローバル権限のうち CREATE TEMPORARY TABLES, SHOW DATABASES, LOCK TABLES のうちいずれか1つを持っています。これらの権限があるとすべてのデータベース名が見えてしまいます。ユーザにこれらの権限が必要ない場合は、削除すればデータベース一覧が短くなります。

6.21 編集/挿入モードで、外部のテーブルに基づいた利用可能なカラムの値の一覧を見るにはどうすればよいでしょうか?

テーブル間に適切なリンクを設定し、外部のテーブルに「表示カラム」を設定する必要があります。例については、 6.6 どうすれば定型問い合わせの際にリレーションテーブルを使えるのでしょうか? を参照してください。次に、外部テーブルの値が100以下である場合は、値のドロップダウンリストが表示されます。 2 つの値のリストが表示されます。最初のリストにはキーと表示カラムが含まれ、2番目のリストには表示列とキーが含まれます。これは、キーまたは表示列の最初の文字を入力できるようにするためです。 100 以上の値の場合、外部キー値を参照して1つを選択するための個別のウィンドウが表示されます。デフォルトの制限である 100 を変更するには、 $cfg['ForeignKeyMaxLimit'] を参照してください。

6.22 ブックマーク: テーブルの表示モードに入ったときに、自動的にデフォルトのブックマークを実行できますか?

できます。ブックマークのラベルをテーブル名と同じにして、ブックマークを公開しないでおけば、実行されます。

6.23 エクスポート: phpMyAdmin が Microsoft Excel ファイルをエクスポートできると聞いたのですが?

Microsoft Excel では CSV が簡単に利用できます。

バージョン 3.4.5 で変更: phpMyAdmin 3.4.5 以降、Microsoft Excel 97 以降の形式での直接エクスポートには対応しなくなりました。

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

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

6.25 (取り下げ)。

6.26 行の範囲選択はどうやるのですか?

範囲の最初の行をクリックして、シフトキーを押しながら範囲の最後の行をクリックします。これは、表示モードまたは構造ページのように、行を閲覧していればいつでも動作します。

6.27 どのような書式の文字列が使えますか?

phpMyAdmin は書式を受け入れるすべての場所において、 @VARIABLE@ 記法および`strftime <https://www.php.net/strftime>`_ 書式文字列が利用できます。変数の展開は文脈に依存しますが (テーブルを選択していないとテーブル名を得られないなど)、以下の変数を使用することができます。

@HTTP_HOST@
phpMyAdmin を稼動させている HTTP ホスト
@SERVER@
MySQL サーバ名
@VERBOSE@
$cfg['Servers'][$i]['verbose'] で定義された詳細な MySQL サーバ名
@VSERVER@
設定されていれば詳細な MySQL サーバの名前、そうでなければ通常の名前
@DATABASE@
現在開いているデータベース
@TABLE@
現在開いているテーブル
@COLUMNS@
現在開いているテーブルのカラム
@PHPMYADMIN@
phpMyAdmin とバージョン番号

6.28 (取り下げ)。

6.29 なぜクエリの結果のテーブルからグラフが作れないのですか?

すべてのテーブルをグラフにできるわけではありません。グラフとして視覚化できるのは、1列、2列、3列のテーブルのみです。さらに、グラフのスクリプトがテーブルを理解するためには、テーブルが特定の形式である必要があります。現在対応している形式は グラフ機能 にあります。

6.30 インポート: ESRI シェイプファイルはどうやってインポートできますか?

ESRI シェイプファイルは、実際には単独ファイルではなく複数のファイルの集合で、空間データが含まれている .shp ファイルと、その空間データに関連するデータが含まれている .dbf ファイルから構成されています。.dbf ファイルから関連するデータを読み込むには、PHP に dBase 拡張 (--enable-dbase) が必要になります。そうでない場合は、空間データのみがインポートされます。

これらのファイルの集合のアップロードは、以下のいずれかの方法を使用することができます。

$cfg['UploadDir'] を使用してアップロードディレクトリを構成し、同じファイル名で .shp ファイルと .dbf ファイルの両方をアップロードし、インポートページから .shp ファイルを選択します。

.shp ファイルと .dbf ファイルを使用して zip アーカイブを作成し、インポートします。これを機能させるには、 $cfg['TempDir'] をウェブサーバのユーザが書き込むことができる場所 (例えば './tmp') に設定する必要があります。

UNIX ベースのシステムで一時ディレクトリを作成するには、以下のようにします。

cd phpMyAdmin
mkdir tmp
chmod o+rwx tmp

6.31 どうやってデザイナでリレーションを作成できますか?

リレーションを選択するには、クリックします。表示されるカラムはピンク色で表示されます。カラムを表示カラムとして設定/解除するには、 [表示するカラムの選択] アイコンをクリックしてから、適切なカラム名をクリックしてください。

6.32 ズーム検索機能はどのように使うことができますか?

検索プロット機能は、テーブル検索とは異なった機能です。データを散布図に描くことにより、テーブルデータを調査するものです。この機能は、テーブルを選択して 検索 タブをクリックしたところから使用できます。 テーブル検索`ページ内のタブに、 :guilabel:`検索プロット の項目があります。

例として 6.6 どうすれば定型問い合わせの際にリレーションテーブルを使えるのでしょうか? の REL_persons テーブルを考えてみてください。検索プロットを使用するには、id と town_code というように、2 つのカラムを選択する必要があります。id の値が一方の軸に置かれた場合、town_code はもう一方の軸に置かれます。それぞれの行は、id と town_code を基に点として散布図内に配置されます。表示されている入力項目より、追加の絞り込み条件を 2 つまで含めることができます。

各点のラベルとして表示される項目を選択することができます。テーブルに表示するカラム (6.7 どうすれば [表示するカラム] 機能が利用できますか? を参照) が設定されている場合は、特に指定しない限りそれがラベルとして扱われます。また、プロットする結果の最大数で、散布図内に表示させたいプロットの最大数が指定できます。描画の指定がよければ、 [実行] をクリックすると散布図が表示されます。

作成された散布図は、マウスホイールでズームの調整が行えます。また、散布図を通じて各点の評価が行えます。細部が判別できる程度まで拡大して、配置されている点の中から評価したいものを探します。点をクリックするとダイアログが開き、描画されている点に対応する行のデータ値が表示されます。必要であればこれらのデータ値は編集することが可能で、 [実行] をクリックすると UPDATE クエリによって内容が変更されます。簡単な使用方法が、散布図の上にある「使い方」リンクをクリックすることにより表示されます。

6.33 テーブル閲覧時に、どうすればカラム名をコピーできますか?

コピーするためにブラウズテーブルのヘッダセル内のカラム名を選択するのは難しいです。カラムはリンク先の列名をクリックしてソートするだけでなく、ヘッダセルをドラッグして並べ替えることもできるからです。カラム名をコピーするには、ツールチップの指示に従って、カラム名の横にある空の領域をダブルクリックしてください。そうすると、カラム名の入力ボックスが表示されます。この入力ボックス内のカラム名を右クリックしてクリップボードにコピーすることができます。

6.34 お気に入りテーブル機能を使用するにはどうすればよいですか?

お気に入りテーブル機能は、最近使用したテーブル機能と非常によく似ています。これは、データベースで頻繁に使用されるテーブルのショートカットをナビゲーションパネルに追加することができます。リストからそれを選択するだけで、リスト内の任意のテーブルに移動することができます。 phpMyAdmin 環境保管領域 を設定していない場合、これらのテーブルはブラウザのローカルストレージに保存されます。そうでない場合は、これらの項目は phpMyAdmin 環境保管領域 に保存されます。

重要: phpMyAdmin 環境保管領域 がない場合、お気に入りのテーブルはブラウザごとに選択したものに基づくため、異なるものになる可能性があります。

お気に入りリストにテーブルを追加するには、データベースのテーブルリストのテーブル名の前にある 灰色 の星をクリックし、黄色になるまで待ってください。リストからテーブルを削除するには、黄色の星をクリックし、再び灰色になるまで待ってください。

config.inc.php ファイルの $cfg['NumFavoriteTables'] を使用すると、ナビゲーションパネルに表示されるお気に入りテーブルの最大数を定義することができます。既定値は 10 です。

6.35 範囲検索機能はどのようにして使うのですか?

範囲検索機能を利用すると、 [検索] タブから表の検索操作を実行している間に、特定のカラムの値の範囲を指定することができます。

この機能を使用するには、カラム名の前にある演算子選択リストから BETWEEN 演算子または NOT BETWEEN 演算子をクリックするだけです。上記のオプションのいずれかを選択すると、そのカラムの 最小値最大値 を尋ねるダイアログボックスが表示されます。 BETWEEN の場合は指定された値の範囲のみが含まれ、 NOT BETWEEN の場合には最終結果から除外されます。

注: 範囲検索機能は Numeric および Date データ型のカラムでのみ機能します。

6.36 主要カラム機能とは何ですか?この機能はどのように使うのですか?

その名前が示すように、主要カラム機能はデータベースごとに主要なカラムのリストを管理することで、同じデータ要素の類似した名前を避け、同じデータ要素のデータ型の一貫性をもたらします。主要リストを使用すると、データベース内の任意のテーブル構造に要素を追加することができるので、似たようなカラム名やカラム定義を記述する手間が省けます。

主要カラムのリストに追加するには、テーブル構造のページに移動し、追加したいカラムをチェックして、 [主要カラムに追加] をクリックしてください。データベースの複数のテーブルから一意のカラムをすべて追加する場合は、データベース構造ページに移動し、対象としたいテーブルを確認してから「主要カラムリストへ追加」を選択してください。

主要カラムリストからカラムを削除する場合は、テーブル構造ページに移動し、削除したいカラムを確認してから、「主要カラムリストから削除」をクリックするだけです。データベースから複数のテーブルからすべてのカラムを削除したい場合は、データベース構造ページに移動し、対象とするテーブルを確認してから「主要カラムリストから削除」を選択してください。

主要カラムリストを表示したり管理したりするには、主要カラムを管理したいデータベースを選択し、トップメニューから「主要カラム」をクリックします。主要カラムリストの編集、削除、新しいカラムの追加ができるページが表示されます。

6.37 テーブル構造の改善機能はどのように使うのですか?

テーブル構造の改善機能は、テーブルの構造を第三正規形にするのに役立ちます。ユーザにウィザードが表示され、正規化のための様々なステップの間に要素について質問を行い、それに応じて新しい構造を提案し、テーブルを第一/第ニ/第三正規形に持ち込むことができます。ウィザードの起動時に、ユーザはテーブル構造をどの正規形まで正規化したいかを選択することができます。

ここでは、第一、第二、第三の3種類の正規形をすべてテストすることができるテーブルの例です。

CREATE TABLE `VetOffice` (
 `petName` varchar(64) NOT NULL,
 `petBreed` varchar(64) NOT NULL,
 `petType` varchar(64) NOT NULL,
 `petDOB` date NOT NULL,
 `ownerLastName` varchar(64) NOT NULL,
 `ownerFirstName` varchar(64) NOT NULL,
 `ownerPhone1` int(12) NOT NULL,
 `ownerPhone2` int(12) NOT NULL,
 `ownerEmail` varchar(64) NOT NULL,
);

上記のテーブルは 主キー がないので第一正規形ではありません。主キーは (petName, ownerLastName, ownerFirstName) になると考えられます。 主キー が提案された通りに選択された場合でも、結果のテーブルには下記の依存関係があるため、第二正規形にも第三正規形にもなりません。

(OwnerLastName, OwnerFirstName) -> OwnerEmail
(OwnerLastName, OwnerFirstName) -> OwnerPhone
PetBreed -> PetType

すなわち、 OwnerEmail は OwnerLastName と OwnerFirstName に依存しています。 OwnerPhone は OwnerLastName と OwnerFirstName に依存しています。 PetType は PetBreed に依存しています。

6.38 どうすればオートインクリメント値を再設定できますか?

AUTO_INCREMENT の値が連続していることを好むユーザもいますが、行を削除した後はそうなるとは限りません。

これを実現するための手順を以下に示します。これらの手順は、ある時点で手動で検証を行う必要があるため、手動で行います。

  • テーブルへの排他的なアクセス権を持っていることを確認する
  • 主キー の列 (すなわち id) の AUTO_INCREMENT 設定を削除する
  • [構造] > [インデックス] で主キーを削除する
  • 新しいカラム future_id を主キー、 AUTO_INCREMENT として作成する
  • テーブルを参照して、新しいインクリメント値が期待通りであることを確認する
  • 古い ID カラムを削除する
  • future_id カラムの名前を id に変更する
  • [構造] > [カラムの移動] で新しい id カラムを移動する

6.39 データベース、テーブル、カラム、プロシージャの名前を変更、コピー、移動時に表示される [権限を調整]とは何ですか?

データベース/テーブル/カラム/プロシージャの名前の変更/コピー/移動時に、 MySQL は自分自身ではこれらのオブジェクトに対する元の権限を変更しません。このオプションを選択することで、 phpMyAdmin がテーブルの権限を調整するので、ユーザは新しいアイテムで同じ権限を持つことができます。

例えば、 'bob'@'localhost' が 'id' という名前のカラムに 'SELECT' 権限を持っていたとします。ここで、このカラムの名前が 'id_new' と変更されると、 MySQL 自身はカラムの権限を新しいカラム名に調整**しません**。 phpMyAdmin はこの調整を自動的に行うことができます。

注:

  • データベースの権限を調整すると、すべてのデータベースに関する要素 (テーブル、カラム、プロシージャ) の権限もデータベースの新しい名前に調整されます。
  • 同様に、テーブルの権限を調整すると、新しいテーブル内の全カラムの権限も調整されます。
  • 権限を調整する際、その操作を行うユーザは以下の権限を持っている**必要があります**。
    • mysql.`db`, mysql.`columns_priv`, mysql.`tables_priv`, mysql.`procs_priv` に対する SELECT, INSERT, UPDATE, DELETE 権限
    • 権限の FLUSH (グローバル)

したがって、これらのオブジェクトの名前変更/コピー/移動中にデータベース/テーブル/カラム/プロシージャをそのまま複製する場合は、このオプションがオンになっていることを確認してください。

6.40 [SQL] ページに「パラメータのバインド」チェックボックスが表示されます。どうやってパラメータのついた SQL クエリを作成するのですか?

バージョン 4.5 から、 phpMyAdmin では [SQL] ページでパラメータを指定したクエリを実行できるようになりました。パラメータの前にはコロン (:) を付け、「パラメータのバインド」チェックボックスをチェックすると、これらのパラメータが識別され、パラメータの入力フィールドが表示されます。フィールドに入力された値は、実行される前にクエリ内で置換されます。

6.41 古いバージョンの MySQL (5.7.6より前) からエクスポートされたダンプを新しいバージョンの MySQL (5.7.7 以降) にインポートしているときにインポートエラーが発生します。同じ古いバージョンにインポートすると正常に動作するのに?

5.7.7 以前の MySQL サーバからエクスポートしたダンプをバージョン 5.7.7 以降の新しい MySQL サーバにインポートしているときに #1031 - Table storage engine for 'table_name' doesn't have this option のようなエラーが発生した場合は、 InnoDB テーブルが ROW_FORMAT=FIXED に対応していないからかもしれません。さらに、 innodb_strict_mode の値によって、これが警告として報告されるか、エラーとして報告されるかが定義されます。

MySQL バージョン 5.7.9 以降では、 innodb_strict_mode のデフォルト値が ON であるため、このような CREATE TABLE または ALTER TABLE 文が検出されるとエラーが生成されます。

インポート中にこのようなエラーを防ぐには、次の2つの方法があります。

  • インポートを開始する前に innodb_strict_mode の値を OFF に変更し、インポートが正常に完了した後に ON にする。
  • これは、次の 2 つの方法で実現できます。
    • [変数] ページへ移動し、 innodb_strict_mode の値を編集する
    • SET GLOBAL `innodb_strict_mode = '[value]'` というクエリを実行する

インポートが完了したら、 innodb_strict_mode の値を元の値にリセットすることが推奨されています。

phpMyAdmin プロジェクト

7.1 バグを見つけました。開発者に知らせるにはどうすればよいですか?

課題追跡システムが <https://github.com/phpmyadmin/phpmyadmin/issues> にあります。セキュリティ上の問題については <https://www.phpmyadmin.net/security> の説明を参照し、開発者に直接メールを送ってください。

7.2 メッセージを新しい言語に翻訳したり、既存の言語を更新したりしたいのですが、どこから始めるのですか?

翻訳はとても歓迎しますし、必要なものは言語スキルだけです。もっとも簡単な方法は オンライン翻訳サービス を使用する方法です。 私たちのウェブサイトの翻訳の節 に翻訳でできることのすべてを見ることができます。

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

私たちは phpMyAdmin の開発に対するすべての協力を歓迎します。協力できるすべてのことが 私たちのウェブサイトの貢献の節 にあります。

セキュリティ

8.1 phpMyAdmin に対して発行されたセキュリティアラートについての情報はどこで入手できますか?

<https://www.phpmyadmin.net/security/> を参照してください。

8.2 phpMyAdmin を総当たり攻撃から守るにはどうすれば良いですか?

Apache ウェブサーバを使用する場合、 phpMyAdmin は Apache の環境に認証情報をエクスポートして、 Apache のログに記録することができます。現在、2つの変数を利用することができます。

userID
現在アクティブなユーザのユーザ名(ログインする必要はありません)。
userStatus
現在アクティブなユーザのステータスで、 ok (ユーザがログインした), mysql-denied (MySQL がユーザのログインを拒否した), allow-denied (allow/deny ルールで拒否されたユーザ), root-denied (設定で root が拒否された), empty-denied (空のパスワードが拒否された) のうちの一つです。

Apache の LogFormat 設定は、次のようなものです。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n"   pma_combined

あとで、ログ解析ツールを使用して、侵入を試みている可能性のあるものを検出することができます。

8.3 あるファイルを直接読み込むとき、なぜパスが公開されてしまうのですか?

これはサーバ設定の問題です。本番サイトでは display_errors を有効にしないでください。

8.4 phpMyAdmin からエクスポートした CSV ファイルで式インジェクション攻撃ができてしまいます。

Microsoft Excel などの表計算プログラムにインポートすると、任意のコマンドを実行できる可能性のある CSV ファイルを生成することが可能です。

phpMyAdmin によって生成された CSV ファイルには、表計算プログラムが数式として解釈するテキストが含まれている可能性がありますが、これらのフィールドをエスケープすることが適切な動作であるとは考えていません。エスケープしたいテキスト出力とエスケープすべき数式を適切に区別してエスケープする方法はありません。私たちはこれについて長々と議論してきましたが、代わりに入力上のそのようなデータを適切に解析してサニタイズするのは、表計算プログラムの責任であると感じています。

Google も 同様の見解 を持っています。

同期

9.1 (取り下げ).

9.2 (取り下げ).