Phpmyadminに入れない – MySQL サーバにログインできません 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

プログラミングエラー Error
プログラミングエラー

このエラーメッセージ「mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]」は、phpMyAdmin が MySQL サーバーに接続しようとした際に、MySQL の認証方式が phpMyAdmin または PHP の mysqli 拡張機能によってサポートされていないことを示しています。
この問題は、主に以下の理由により発生します。

  1. MySQLのバージョン:
    MySQL 8.0 以降では、デフォルトの認証プラグインが caching_sha2_password に変更されました。これは以前のバージョンの MySQL や PHP の mysqli 拡張機能がデフォルトでサポートしている mysql_native_password とは異なります。
  2. 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_usernameyour_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のバージョンが低い方はアップデートすることを検討してみてください。

これらの解決策のいずれかを試してみて、問題が解決するかどうかを確認してみてください。また、セキュリティ上の理由から、特に本番環境では、認証方式を変更する際には慎重に行いましょう。


コメント