XAMPP に同梱されている phpMyAdmin を使っていると、アップグレードや設定変更のタイミングで「クッキー暗号化キーが必要です」「環境保管領域が未設定です」「controluser での接続に失敗しました」といった警告やエラーが表示されることがあります。
これらは致命的な不具合ではないものの、放置するとセキュリティ面や機能面で制限がかかり、操作に支障が出るケースもあります。
本記事では、代表的な警告・エラーの 「症状」と「原因」 を分かりやすく整理しました。ご自身の環境で同じ表示が出たときに、原因をすぐに切り分けられる参考にしてください。
クッキー暗号化キー不足
エラーメッセージ:「クッキーの暗号化用の有効なキーが必要です(blowfish_secret)」。
症状、原因
症状:「警告: クッキーの暗号化のために、構成ファイルに有効なキーが必要です。一時的なキーが自動的に作成されました。」
原因:config.inc.php の $cfg[‘blowfish_secret’] が未設定または短すぎる(十分な強度がない)。
解決ステップ
- Apache を停止(XAMPP Control Panel)。
- C:\xampp\phpMyAdmin\config.inc.php を開く。無ければ config.sample.inc.php を config.inc.php にコピー。
- 32文字ジャストのランダム文字列を設定。 $cfg[‘blowfish_secret’] = ‘Ab9f!2GhJkLmN7pQrStUvWxYz1234567’;一般的な記号(!@#$%^&*_-+= など)は問題なく使えます。
- Apache 起動 → 警告が消えているか確認。
参考設定(最低限)
$cfg['Servers'][1]['auth_type'] = 'cookie';
$cfg['blowfish_secret'] = '(32〜64文字のランダム文字列)';
$cfg['TempDir'] = 'tmp';PHP不具合が起きたときの戻し方(ロールバック)
設定を戻すだけでOK。blowfish_secret を空に戻すと警告が再発します。初期値は”xampp”になっています。
phpMyAdmin のアップデート
エラーメッセージ:「新しい phpMyAdmin が提供されています(x.x.x)」アップグレード手順。
症状、原因
- 症状:「phpMyAdmin の新しいバージョンが提供されています。最新バージョンは 5.2.2 で、2025-01-21 にリリースされています。」
- 原因:現在の phpMyAdmin が古く、最新リリース(例:5.2.2)より前のバージョンを使用している。
注意点(互換性)
- XAMPP の PHP バージョンが phpMyAdmin の要件を満たす必要あり。古い XAMPP だと最新版が動かないことがあります。
- もし動かない場合は
- A) XAMPP 本体を更新
- B) 1つ前の phpMyAdmin を使う(要件内)
解決ステップ(フォルダ差し替え方式)
- Apache、mysql 停止。
- バックアップ:C:\xampp\phpMyAdmin を phpMyAdmin_backup。
- 最新のバージョンをダウンロード。
- 公式 zip を解凍 → フォルダ名を phpMyAdmin にリネーム。
- 旧 C:\xampp\phpMyAdmin を phpMyAdmin_old にリネーム。
- 新フォルダ phpMyAdmin を C:\xampp\ 直下へ配置。
- 旧フォルダから config.inc.php を新フォルダ直下へコピー(無ければ sample を元に新規作成)。
- (推奨)tmp フォルダ & $cfg[‘TempDir’] を設定。
- Apache 起動 → http://localhost/phpmyadmin/ でバージョン確認。
不具合が起きたときの戻し方(ロールバック)
動作不良なら Apache、mysql 停止 → 新フォルダを削除 → phpMyAdmin_old を元名に戻す。
環境保管領域エラー
エラーメッセージ:phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。代わりにデータベースの操作タブを使って設定することもできます。
症状、原因
- 症状:「phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。」
- 原因:config.inc.phpが存在しない。(存在しない場合は作成して配置する)
- 原因:phpmyadmin データベースと関連テーブル、制御ユーザー(controluser)が作成されていない。
何ができるようになるか
- ブックマーククエリ、Recent/お気に入り、リレーションビュー、PDF 設計、中央設定保存などの拡張機能。
解決ステップ(SQL スクリプトで一気に用意)
- Apache/MySQL 起動(MySQL は XAMPP のもの)。
- http://localhost/phpmyadmin/ → ルートでログイン。
- phpMyAdmin ディレクトリの sql/create_tables.sql をインポート(または貼り付け実行)。
これで phpmyadmin データベースと必要テーブルが作成されます。 - 再読み込み → 警告が消え、拡張機能が有効化。
代替(操作タブから)
- 任意のDBを開き「操作」タブに “ストレージを作成” のガイドが出る場合は、それに従って自動作成も可能。
不具合が起きたときの戻し方(ロールバック)
- phpmyadmin DB を削除。
認証プラグイン未対応エラー
エラーメッセージ:mysqli::real_connect(): (HY000/2054): The server requested authentication method unknown to the client [auth_gssapi_client]
症状、原因
- 症状:phpMyAdmin からログインしようとしても接続に失敗し、認証方式に関するエラーが表示される。
- 原因:MySQL ユーザーが auth_gssapi_client など、PHP/mysqli が対応していない認証プラグインを利用している。
- 原因:MySQL/MariaDB 側ユーザーの認証プラグインが auth_gssapi_client(Kerberos 連携等)に設定されており、XAMPP の PHP(mysqli/mysqlnd)が未対応。
- 原因:似た系統のエラーに caching_sha2_password・sha256_password などのプラグイン不一致もあります。
解決戦略(どちらか)
A. クライアント(PHP/mysqli)を対応版にする
- 実務では難しい/手間が大きい(XAMPP の更新やビルドが必要)。
B. DBユーザーの認証プラグインを一般的なものへ変更(現実解)
- mysql_native_password や caching_sha2_password へ切り替える(環境のPHP対応に合わせる)。
解決ステップ(ユーザーのプラグイン変更)
- MySQL に CLI など別クライアントで接続(root 権限)。
- 対象ユーザーを確認: SELECT user, host, plugin FROM mysql.user;
- 変更(例:mysql_native_password に変更するケース
- ALTER USER ‘your_user’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘強いパスワード’;
- ALTER USER ‘your_user’@’localhost’ IDENTIFIED VIA mysql_native_password USING PASSWORD(‘強いパスワード’);
- config.inc.php の接続ユーザー・パスを一致させる。
- $cfg[‘Servers’][$i][‘user’] = ‘your_user’; // 通常は空のままでもOK
- $cfg[‘Servers’][$i][‘password’] = ‘your_pass’; // 同上
- ※通常は $cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’; で、ログイン画面で都度入力します。
- Apache 再起動 → 接続エラーが解消するか確認。
不具合が起きたときの戻し方(ロールバック)
- 変更前のプラグインに戻す: ALTER USER ‘your_user’@’localhost’ IDENTIFIED WITH auth_gssapi_client BY ‘元のパス’; FLUSH PRIVILEGES;
pma ユーザー認証失敗
エラーメッセージ:mysqli::real_connect(): (HY000/1045): Access denied for user ‘pma’@’localhost’ (using password: NO)
症状、原因
- 症状:
phpMyAdmin 画面に警告が出て、一部の拡張機能(履歴・ブックマーク・リレーションなど)が使えない。 - 原因:
管理用ユーザー(controluser)pma がDBに存在しない、または config.inc.php にパスワード未設定で、phpMyAdmin が「パスワード無し」で接続を試みて拒否されている。
解決ステップ
- 管理用ユーザー(pma) を作成
- (任意名可): CREATE USER ‘pma’@’localhost’ IDENTIFIED BY ‘強いパスワード’;
- GRANT SELECT, INSERT, UPDATE, DELETE ON `phpmyadmin`.* TO ‘pma’@’localhost’;
- — 必要に応じて追加権限(たとえば relation 機能で mysql.* 参照等)を付与 FLUSH PRIVILEGES;
- config.inc.php に制御ユーザー設定(controluser)を記述: $i = 1; // 既に1なら流用 $cfg[‘Servers’][$i][‘controluser’] = ‘pma’; $cfg[‘Servers’][$i][‘controlpass’] = ‘強いパスワード’; // (必要に応じて)$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;
CREATE USER 'pma'@'localhost' IDENTIFIED BY '強いパスワード';
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
FLUSH PRIVILEGES;SQL「controluser での接続に失敗」
※下記のエラーと重複で出てくるので、前に紹介した、内容でほぼ改善できるかと思います。
エラーメッセージ:mysqli::real_connect(): (HY000/1045): Access denied for user ‘pma’@’localhost’ (using password: NO)
症状、原因
- 症状:「設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました。」
- 原因:config.inc.php に設定された controluser/controlpass が、DB 側に存在しない or 認証方式が不一致。
原因
- config.inc.php の controluser / controlpass がDB側と不一致、もしくはユーザー未作成・権限不足。
- MySQL 側の認証プラグイン不一致(④と同根)。
解決ステップ
- config.inc.php の該当行を確認: $cfg[‘Servers’][1][‘controluser’] = ‘pma’; $cfg[‘Servers’][1][‘controlpass’] = ‘強いパスワード’;
- DB に
pma(または指定ユーザー)が存在するか確認: SELECT user, host, plugin FROM mysql.user WHERE user=’pma’; - 無ければ作成・権限付与(③参照): CREATE USER ‘pma’@’localhost’ IDENTIFIED BY ‘強いパスワード’; GRANT SELECT, INSERT, UPDATE, DELETE ON `phpmyadmin`.* TO ‘pma’@’localhost’; FLUSH PRIVILEGES;
- 認証プラグインが不一致なら(④の要領で)mysql_native_password などへ変更。
- Apache 再起動 → エラー消失を確認。
不具合が起きたときの戻し方(ロールバック)
- controluser 行をコメントアウトして機能を無効化(拡張機能は使えなくなります)。
付録:config.inc.php のサンプル(XAMPP 向け)
<?php
/*
* This is needed for cookie based authentication to encrypt password in
* cookie
*/
$cfg['blowfish_secret'] = ''; /* YOU SHOULD CHANGE THIS FOR A MORE SECURE COOKIE AUTH! */
/*
* Servers configuration
*/
$i = 0;
/*
* First server
*/
$i++;
/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'username';→ここにユーザー名
$cfg['Servers'][$i]['password'] = 'password';→ここにパスワード
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Lang'] = '';
/* Bind to the localhost ipv4 address and tcp */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = 'pma';ここにユーザー名
$cfg['Servers'][$i]['controlpass'] = '';ここにパスワード
/* Advanced phpMyAdmin features */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
/*
* End of servers configuration
*/
?>PHPまとめ
今回紹介したような phpMyAdmin の警告やエラーは、どれも珍しいものではなく、多くの開発環境で一度は目にするものです。
大切なのは「なぜこの警告が出ているのか」を理解し、慌てずに設定やバージョンを確認して対応することです。
もし同じようなメッセージが出たときは、「これは自分の環境でよくある調整ポイントなんだ」と落ち着いて原因を切り分けてみてください。
その積み重ねが、XAMPP や phpMyAdmin をより安心して使いこなすことにつながります。
あなたの環境に合った正しい対処を選びながら、快適な開発環境を整えていきましょう。

