MySQL 8系で PHPから接続できない場合

MySQL 8系で PHPから接続できない場合

どうもfujiharaです。今年も残りわずかですね。 年々寒く感じる度合いが強くなっているのですが、基礎代謝が落ちてるのが 原因かと怯えています。
今回はとある案件でサーバ移行時にMySQLのバージョンが上がり 8.x になったときに PHPから接続できない現象が発生して解決した方法をご紹介します。

背景

とあるプロジェクトでサーバ移行が必要だったのですが、 コンテンツを移行して、いざページを表示するとMySQLにつながらない。

原因

エラーを確認するとパスワードで弾かれてました。
原因を探すとMySQL 8では パスワードがデフォルトで暗号化されるので(cache_sha2_password) プログラムから接続する場合もこれに対応していないと接続ができないとのこと。
今回はプログラム側を変更しなかったので、 MySQL側で以下の用に対応しました。


# /etc/my.cnf

[mysqld]
default_authentication_plugin= mysql_native_password


こうした上でユーザを作成するとうまく接続できました。もしくは CREATE USER 時に IDENTIFIED WITH mysql_native_password BY 'password' を使用して パスワードを設定できるとのことです。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ