PHP7.1からMySQL8に接続するための設定

PHP7.1からMySQL8に接続するための設定

ポイントは2点。
(1)パスワードの認証方式の変更
(2)文字コードの設定

(1)パスワードの認証方式の変更

以下のようなエラーが出たときの対策。

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

PHP 7.1.16またはPHP 7.2.4よりも前のバージョンのPHPでは、MySQL8のデフォルトのパスワード認証方式caching_sha2_passwordに対応していない。
(参考: PHP: 要件 – Manual

パスワード認証方式をmysql_native_passwordに変更する必要がある。

(1-1) 既存のユーザーのパスワード認証方式を変更する

既存のユーザーのパスワード認証方式を確認する。

SELECT user, host, plugin FROM mysql.user;

plugin列が「caching_sha2_password」なら新しい認証方式になっている。

既存のユーザーのパスワード認証方式を変更する。

ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'XXXX';

(1-2) 新規のユーザーのパスワード認証方式を変更する

新規に作成するユーザーのパスワード認証方式を変更ため、my.cnfに以下の行を追加する。

[mysqld]
default_authentication_plugin=mysql_native_password

(2)文字コードの設定

以下のようなエラーが出たときの対策。

SQLSTATE[HY000] [2054] Server sent charset unknown to the client.

my.cnfに以下の行を追加する。

[mysqld]
collation-server=utf8mb4_unicode_ci
character-set-server=utf8mb4

最後にMySQLを再起動する。

$ sudo systemctl restart mysqld

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください