Illuminate\Database\QueryException：SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) の解決方法

## はじめに
タイトルに記載のエラーがなかなか解決できず、心が折れそうになりながらも
試行錯誤の末、、、ようやく解決できました！！
試した事を時系列順に記載してしまうとごちゃごちゃしてしまうと思ったため、できる限り
スムーズに解決に繋げていただくためにも、エラーの原因に直接関わっていたであろう
項目を流れも含めピックアップしました。
この記事の内容が、見て下さった方の問題解決のきっかけやヒントに繋がる事を願っています。

## 対象者
Laravelを使って、webアプリ開発をしようと考えられている方

## 開発環境
・macOS Monterey(バージョン12.4)
・PHP 8.1.8
・MAMP & MAMP PRO 6.6(Intel)
・MySQL 8.0

## エラーが発生するタイミング
以下のコマンドを実行した時
```
php artisan migrate
```

## 原因
結果的に複数の問題が重なってましたが、今回のケースで言うと原因は主に以下の3つでした。
1.  phpMyAdminで作成したユーザ情報の不備
2.  .envに設定している環境変数に指定している値
3.  .envに本来あるべき環境変数(パス情報)の設定不足

## 解決方法

### 1. phpMyAdminで追加したユーザを再度作成
まず注目すべきなのが、エラーログの「Access denied for user〜」と言う
アクセス権限がないと言われている箇所です。
ここがもし、「Access denied for user 'root'@'localhost'」と出力されているならば
ユーザを作り直さなければいけません。
具体的には、以下の方法です。
#### ※ ホスト名を「%」ではなく、「localhost」に設定する
![20220726-225547.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/f846b2e2-dbb3-5127-e6f0-5aed70a8da9b.png)

以下の設定はあくまで推測で行なったものなので、エラーの解決に直結した内容かは
保証できませんが、とりあえず権限を最強にするために、キャプチャのように
「すべてチェックする」にチェックをつけ、「タイプ」をグローバルにしました。
![20220726-230114.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/6ed0f630-0799-9d6f-ad06-310694ee75b2.png)
・ユーザの詳細 
※rootユーザはデフォルトで存在しているため、とりあえずエラーを解消したいと
言うことでしたら、新たなユーザを作成せずにこちらのユーザを使用するのもありです！
![20220726-230328.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/8ab0d5dc-3e6a-d7b4-291f-ecf7b0b03f73.png)

### 2. .envに設定している環境変数に指定する値の修正
修正内容としては、デフォルトで「127.0.0.1」が設定されていた
環境変数(DB_HOST)の値を「localhost」に変更。

・修正前
![20220726-231140.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/3bc53917-62ad-9174-e382-d5f74443331c.png)
・修正後
![20220726-230916.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/0574062f-9799-c805-5e14-46a3a12275dd.png)

### 3. 環境変数(パス情報)の設定を.envに追加
ちなみに、LaravelからDBに接続する方法に、UNIXドメインソケットを使用するやり方が
あるのですが、実はその設定がデフォルトの.envには存在していません。
その設定がないまま最初のmigrateコマンドを実行した際に、以下のエラーが返ってきます。

・エラー内容
Illuminate\Database\QueryException：
SQLSTATE[HY000] [2002] No such file or directory　〜

パスの指定が間違っていると言うことで、エラーが起きています。
こちらのエラーを解決するための方法が、以下キャプチャの設定という訳です。
![20220726-231825.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/110a09b0-2ced-aa00-85b9-121fd8e3f25e.png)

## 最終確認
以上の工程が済みましたら、もう一度以下のコマンドを実行して見てください。
```
php artisan migrate
```
実行後に以下の内容が出力されたら成功です !!
![20220726-234956.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/4b976ee5-223f-c9df-f5bd-3262ecd45e0e.png)

もしまだ同じようなエラーが出現するという事でしたら、別の原因を潰して
いかないといけないと言う事なので、「参考」に貼らせていただいている記事を
見て試してみてください！
キャッシュのクリア等で解決された方もいるようなので、解決に繋がる可能性も
あると思います！
また、もしこの時点で既に解決していただいているのであれば、この後に
めちゃくちゃダサいこと書いているので、読み飛ばしちゃってください。笑

## 最後に
まだ解決していないと言う方に、是非行なっていただきたい事が2つあります。
1つ目が、「修正する度に、ファイルを保存しコマンドを実行する」です。
2つ目が、「絶対に諦めないこと」です。
ありきたりな事しか言えず申し訳ありませんが、自分自身が解決できたのも
修正する度に、その都度コマンドを実行して確認し、同じエラーが何度返ってこようが
絶対に諦めなかったからだと思っています。
エラーについてgoogleで検索してみると、解決方法が様々ありどれが自分に
当てはまっているのか、特に今回の事象に関しては正直訳がわからなかったです。
なので、原因を探す意味でも小まめに確認することが、改めて重要だと実感しました。
また、根性論だけで片付けるのは違うと思いますが、少なからず気持ちも大事だと思っています。
日々、エラーに直面する度に「まだまだ勉強不足だな...」という思いに晒されます。
挫折もするし、心も折れまくってバキバキです。笑
それでも、それらを乗り越える度に本当に自分自身の成長を感じられます！
ただ、基本的に人生うまくいかないことの方が多くて当たり前だと言う姿勢で
開き直るようにして生きているので、余計な事は考えずに今後も自分にとっての
目の前の問題や課題に真摯に向き合えればなと思います。
大変な時こそ成長できるチャンス。キツくて投げ出したくなる瞬間もあると思いますが、
がんばっていきましょう!!

## 参考
・ https://omachizura.com/2016/09/laravel-db-error.html
・ https://inouelog.com/access-denied-user/
・ https://qiita.com/okmtz/items/deb9d3bcd622eed59034