【Laravel】デフォルト認証がmysql_native_passwordなのにmigrationでauthenticationエラーが出る場合の解決方法
LaravelMySQLXAMMP
前提
エラー文をコピペして、ググってみても
MySQL8以降はユーザーの認証方法がデフォルトでcaching_sha2_passwordになっている。
だからmysql_native_passwordにしないとダメ。
という内容しか出てこない。
いや、デフォルトでmysql_native_passwordになってるよ。
そもそもMySQLのバージョン15だし!
という方向けに、解決方法がわかったのでまとめ。
環境
- Mac OS
- Laravel 4.2.4
- MySQL 15.1
- XAMMP
エラー内容
$ php artisan migrate
SQLSTATE[HY000] [2054] The server requested authentication method unknown...
結論
LaravelからMySQLに接続するときに、unix_socketというものを設定しないとどうやらソケット通信がうまくいかないよう。
Laravelのプロジェクト内にある.envファイルに以下を追加。
DB_SOCKET=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
同じくLaravelのプロジェクト内にあるconfig/database.phpを以下に変更。
'mysql' => [
// ...
'unix_socket' => env('DB_SOCKET', null),
],
↑を設定したら、キャッシュをクリアしてmigrate。
$ php artisan cache:clear
$ php artisan migrate
できました。

zawa1205
webフロントエンドエンジニア