久々に Windows Server を触る機会があったのですが。
Linux は触り慣れているので設定にそこまで悩まないのですが、Windows Server は全く勝手が違うので四苦八苦。
なんとか設定が終わり phpmyadmin でデータベースやテーブルの作成を行おうとしたのですが、
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
というエラーが表示されてログインできない。
検索してみると大概のサイトが「my.ini」の中にある
default_authentication_plugin=caching_sha2_password
という行をコメント化して
default_authentication_plugin=mysql_native_password
と追記して MySQL を再起動すると直ると書いてある。
どうやら MySQL 8.0 以降の認証方式は、デフォルトが「mysql_native_password」から「caching_sha2_password」に変わったらしく、それが原因らしい。
しかし、教えの通りにやってみるがうまくいかない。
上記設定はあくまでこれから作成するユーザーに対する設定であって、既に作成済みのユーザーに対しては反映されない。
既存ユーザーの設定を変えるには、コマンドプロンプトでわざわざ MySQL にアクセスして修正する必要がある。
例えば今回のように root の設定を変えるには
use mysql;
ALTER USER ’root’@’localhost’ IDENTIFIED WITH mysql_native_password BY 'rootのパスワード';
で変更できる。