私はdockerを使用しており、dockercomposeの構成にLaravel Framework 5.5.25 and other with mysql Ver 8.0.11 for Linux on x86_64(MySQL Community Server-GPL)。これを持っています:
version: "2"
services:
mysql:
image: mysql
ports:
- "3307:3306"
command: --sql_mode=""
したがって、Laravel MySqlに接続しようとすると、次のエラーが発生します。
SQLSTATE [HY000] [2054]サーバーがクライアントに不明な認証方法を要求しました(SQL:select * from
MySQL8およびPHP7 +にはレガシースタイルのパスワードを使用する必要があります。
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
私はlaravel 5.8を使用しており、MAMPサーバーでこのエラーを解決するには、以下のように.envファイルにDB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
を追加します。
DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=8889
DB_DATABASE=dbname
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
いくつかのブログで見つけたように、それは通常、最新のMySQLバージョンのソケットの問題が原因です。
私の場合、新しいアプリケーションキーを生成し、それを.envファイルのAPP_KEY変数に割り当てることで問題が解決しました。
php artisan key:generate --show
上記のコマンドは、.envファイルのAPP_KEY変数に割り当てることができる新しいキーを生成します。そうすることで、私の問題は修正されました。
ローカルマシンに.local.envを使用していて、そこに割り当てました。 .production.envファイルでも同じことを行うことができます。
お役に立てれば。