zawatech

【Laravel】デフォルト認証がmysql_native_passwordなのにmigrationでauthenticationエラーが出る場合の解決方法

カテゴリ
LaravelMySQLXAMMP
Xこの記事をポストする
この記事をLINEでシェア

前提

エラー文をコピペして、ググってみても

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

できました。

Xこの記事をポストする
この記事をLINEでシェア
zawa1205

zawa1205

Qiita
GitHub
mail

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