はじめに
laravelの環境を5.6系から6.0系へバージョンアップした途端、
DBにユーザとパスワード、権限を正しく設定しているにもかかわらず、
phpからphp artisan migrateなどを行っても、下記のエラーでmysqlに接続できない人向けの記事です。
動作環境
-laravel 5.6 → 6.0.4へバージョンアップ
-PHP 7.3.12
エラーコード
In Connection.php line 665:
SQLSTATE[HY000] [1045] Access denied for user 'host名'@'ip' (using password: YES)
In PDOConnection.php line 31:
SQLSTATE[HY000] [1045] Access denied for user 'host名'@'ip' (using password: YES)
In PDOConnection.php line 27:
SQLSTATE[HY000] [1045] Access denied for user 'host名'@'ip' (using password: YES)
解決方法
下記2通りのどちらかの方法により、解決可能です。
1.DBのユーザパスワードに"#"が含まれている可能性が高いので、#がないパスワードを新たに設定し直す。
2.ダブルクォーテーションでパスワードを囲む
.env
DB_CONNECTION=mysql
DB_HOST=ホスト名
DB_PORT=3306
DB_DATABASE=DB名
DB_USERNAME=DBユーザ名
DB_PASSWORD="hoge#"←ダブルクォーテーションで囲む。
解説
laravel5.8以降、.envファイル内の#は値として認識されないそうです。
そのため、もし.envファイルに記載したDBパスワードに#が含まれていると、値として認識されないせいでパスワードエラーとなり、アクセス出来なかったと考えられます。