このエラーメッセージ「mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]」は、phpMyAdmin
が MySQL サーバーに接続しようとした際に、MySQL の認証方式が phpMyAdmin
または PHP の mysqli
拡張機能によってサポートされていないことを示しています。
この問題は、主に以下の理由により発生します。
- MySQLのバージョン:
MySQL 8.0 以降では、デフォルトの認証プラグインがcaching_sha2_password
に変更されました。これは以前のバージョンの MySQL や PHP のmysqli
拡張機能がデフォルトでサポートしているmysql_native_password
とは異なります。 - phpMyAdminのバージョン:
例えばphpmyadmin/phpmyadmin:4.8
を使用している場合などは、新しい認証方式に対応していない可能性があります。
新しいMySQLの認証方式をサポートするためには、phpMyAdmin のより新しいバージョンが必要です。
解決策
MySQLユーザーの認証方式を変更する
MySQL 8.0 で phpMyAdmin
を使用するための一般的な解決策は、MySQL ユーザーの認証方式を caching_sha2_password
から mysql_native_password
に変更することです。これは、MySQL サーバー上で次のような SQL コマンドを実行することで行えます。
ALTER USER 'your_username'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'your_password';
FLUSH PRIVILEGES;
ここで、your_username
と your_password
は適宜自身の環境に合わせた変更が必要です。
ただし、Dockerを用いている場合は、下記を行うことで、この SQLコマンドの実行は不要となるはずです。
phpMyAdminのバージョンをアップデートする
より新しいバージョンの phpMyAdmin
は、新しい認証方式をサポートしている可能性が高いです。docker-compose.yml
ファイル(dockerを使っている場合)で、より新しいバージョンの phpMyAdmin イメージを指定してみてください。
MySQL 8.0 以降のバージョンと互換性があるphpMyAdminの適切なバージョンは phpMyAdmin 5.2.1
で、このバージョンは2023年2月8日にリリースされ、PHP 7.2以降およびMySQL/MariaDB 5.5以降と互換性があります。
docker-compose.yml
ファイル内で phpmyadmin/phpmyadmin
のイメージを phpmyadmin/phpmyadmin:5.2.1
に更新することで、MySQL 8.0 で導入された新しい認証方式(caching_sha2_password
)に対応することができます。
PHPのバージョンを確認する
最後に新しいバージョンの PHP は caching_sha2_password
をサポートしていると思いますので、PHPのバージョンが低い方はアップデートすることを検討してみてください。
これらの解決策のいずれかを試してみて、問題が解決するかどうかを確認してみてください。また、セキュリティ上の理由から、特に本番環境では、認証方式を変更する際には慎重に行いましょう。
コメント