たかブログ

webを勉強しています。

mysql8.0の認証プラグインでつまずいた。

laravelのDB接続でつまずいた箇所。


php artisan migrate  でユーザー名とパスワード が一致しないエラー




内容:


MySQL ではユーザー認証を行うときに認証プラグインを使います。複数の認証プラグインが存在し、 MySQL 8.0.4 以前と以降ではデフォルトで使用される認証プラグインが変更になりました。


~5.7までの認証プラグインでは 

MySQL には、ネイティブ認証 (つまり、mysql.user テーブルの Password カラムに格納されたパスワードと照合する認証) を実装する 2 つのプラグインが含まれています。このセクションでは、ネイティブのパスワードハッシュ化方式を使用して、mysql.user テーブルと照合する認証が実装された mysql_native_password


らしく、DBとの接続にてユーザーとパスワード が一致しているか確認するための仕組みらしい。



それが、mysql8.0以降だと、 caching_sha2_password と言うのを使って、よりセキュアーなプラグインを導入する必要がある。




解決策:

1 select user, host, plugin FROM mysql.user; でユーザやhostを確認


2 alter user 'username' identified with mysql_native_password by 'password';




でユーザの認証方式を変更させる必要がある。








参考:

hirona-bys.hatenablog.com


qiita.com

MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.3.8.1 ネイティブ認証プラグイン