Help us understand the problem. What is going on with this article?

SQLSTATE[HY000] [1045] Access denied for userの解消

はじめに

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パスワードに#が含まれていると、値として認識されないせいでパスワードエラーとなり、アクセス出来なかったと考えられます。

参考記事
https://github.com/laravel/ideas/issues/1540

kotatsu0715
2019年5月よりテックエキスパートで勉強後、AWSエンジニア兼フロント・バックエンドエンジニアとして仕事をしています。 AWS,Docker,React.js,Vue,js,Nuxt.js,PHP,Laravel,TypeScript,HTML,CSS等触ってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away