[Laravel] Laradock の MySQL に接続できない時の対処法(参考)

2019年4月2日ITLaravel, PHP

以前にMySQL が立ち上がらなくてハマったのですが、今度は立ち上がったMySQLに接続できなくなりました。

以前ハマった時の投稿:
[Laravel] Laradockを使って、MySQLが立ち上がらない時の対処法

Laravel のプロジェクトがあるコンテナに接続して、

php artisan migrate

をすると、

PDOException::("SQLSTATE[HY000] [2002] Connection refused")

DB_HOST は docker ps で確認すると、0.0.0.0:3306 だったので、0.0.0.0 を設定していました。
(ちなみに 127.0.0.1 でもConnection refused でした。)

結果ですが、Laravel プロジェクト側の .env ファイルの DB_HOST に mysql を設定してやると接続できました。

修正前:

DB_CONNECTION=mysql
DB_HOST=0.0.0.0
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

修正後:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

参考:
Trouble with MySQL connection

参考先でも述べられてますが docker のネットワーキングの仕様みたいなのですが、、、

試しにコンテナのIPアドレスに変えてみたのですが、これでは動きませんでした。。
(docker exec -it laradock_mysql_1 bash → hostname -i で 内部IPを調べています)

仮修正:

DB_CONNECTION=mysql
DB_HOST=172.19.0.3
DB_PORT=3306
DB_DATABASE=myblog
DB_USERNAME=root
DB_PASSWORD=root

パブリックIP 0.0.0.0 でも、プライベートIP 172.19.0.3 でも接続できない、、

なぜだw

docker の本買って、勉強しようと思います。

スポンサーリンク

Posted by nobuhiro harada