はじめに
SQLSTATE[HY000] [2002] Connection refusedエラーが発生。
.envの環境変数の値は正しい、config/database.phpと.envの環境変数名も同じ、configに.envの内容も反映されている、がエラーは解消せず...
上司に助けを求めたところ、システムの不具合でmysql.sockが更新されないため、dockerを起動する前に都度、databaseフォルダのmysql.sockをrmコマンドで削除する必要があるとのこと。
ここで一つ気になったのが、mysql.sockって何?
mysql.sockとは?
mysqlクライアントからmysqlサーバーに接続するためには、ソケット接続とTCP接続の2つの方法がある。
前者は通常、ローカルのファイルを経由して通信を行うので後者より早い。
ソケット接続したいならパスを記載しないと接続できない。
引用元: https://zenn.dev/fujishiro/scraps/4b74cdc50670d4
ソケット接続とは?
ソケット インターネットはTCP/IPと呼ぶ通信プロトコルを利用しますが、そのTCP/IPをプログラムから利用するには、プログラムの世界とTCP/IPの世界を結ぶ特別な出入り口が必要となります。 その出入り口となるのがソケット(Socket)であり、TCP/IPのプログラミング上の大きな特徴となっています。
引用元: http://research.nii.ac.jp/~ichiro/syspro98/socket.html
まとめ
mysql.sockはmysqlクライアント(プログラムの世界)からmysqlサーバー(TCP/IP)に接続するために必要なファイル。