PHPでMySqlに接続する際に発生するエラー(SQLSTATE[HY000] [2054] )について

システム開発Tips

エラーの内容

PHPからMySQLに接続する際に、以下のエラーが表示されました。

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

ぐぐるとMySQL 8〜ではデフォルトの認証方法が変わったためにドライバが対応していなくて、エラーになっているとのこと。

alter userで認証方法をcaching_sha2_passwordからmysql_native_passwordに変えると直るという記事を見てやってみたけど一向に直らない。

しょうがないのでそもそも、もう対応してるんじゃない?と最新版PHPの記事を探すと、案の定最新版のxammpでは対応しているとのこと。

原因

xammpを入れ替えてみるとエラーが以下に変わる。

sqlstate[hy000] [1045] access denied for user 'user'@'172.20.0.1' (using password: yes)

なんでだーと思ってたらどうやらdockerを噛んでるのが影響してそう。

どうもdocker-composeで2つmysqlを立ち上げてたのが悪かったみたいで、
ポートフォワードで別ポートのmysqlにつなぎにいけてなくてデフォルトポートの方につなぎに行ってた模様。

死ぬほど時間が溶けてしまった。残念。

結果として最新のxammp(正確にはPHP?)ではcaching_sha2_passwordでつなぎにいけます。
みなさん無駄に認証方法を変更しないように。なむ。

フォローお願いします!

コメント

タイトルとURLをコピーしました