LoginSignup
1
0

More than 1 year has passed since last update.

mysql on docker on ubuntu on hyper-v on windows10な環境でMySQLに接続できなくなったとき

Posted at

問題と原因

Lost connection to MySQL server at 'reading initial communication packet', system error: 0

のようなエラーが出るとき、原因は様々だ。

今回の原因は、UbuntuのVMがネットに接続されていなかったというかHyper-Vのネットワークスイッチがおかしくなっていたことであった。

ubuntu_on_hyper_v
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 172.18.11.59 icmp_seq=1 Destination Host Unreachable
From 172.18.11.59 icmp_seq=2 Destination Host Unreachable
From 172.18.11.59 icmp_seq=3 Destination Host Unreachable
From 172.18.11.59 icmp_seq=4 Destination Host Unreachable
From 172.18.11.59 icmp_seq=5 Destination Host Unreachable
From 172.18.11.59 icmp_seq=6 Destination Host Unreachable
^C
--- 8.8.8.8 ping statistics ---
7 packets transmitted, 0 received, +6 errors, 100% packet loss, time 6137ms
pipe 4

トラブルシューティングの過程

発見経緯

Railsの開発をしていて、rspecを回そうとしたところ当該エラーが出た

前提

前夜までは何事もなく動いていた。

試行

  1. 手元の変更をgit stashで退避させてrspecをまわす→同じエラー
  2. docker psでmysqlのdocker imageが起動していることを確認→起動している
  3. docker kill <image hash>して殺してsudo docker-compose -f docker-compose-web.yml up -d dbしてrspecを回す→同じエラー
  4. docker-compose -f docker-compose-web.yml buildしてみて同様に試す→同じエラー
  5. Windows10からheide sqlでいつも通り接続を試みる→同じエラー
  6. rspecを回すときにmysqlの動いているシェルの実行ログを監視する(VSCodeで簡単に見れる)→なにも出力されない
  7. mysqlのdocker containerにattach shellして(VSCodeで簡単にできる) mysql -u root -pして手動ログインを試みる→成功
  8. bundle exec rails consoleを試す→同じエラー
  9. 3306 portへの疎通確認→成功

    $ nc -vz localhost 3306                                                                                                                                         
    Connection to localhost 3306 port [tcp/mysql] succeeded!
    
  10. UbuntuのVM再起動→変化なし

ここまで試して、試しにaptの更新かけてみたら?今日dockerの更新降ってきてたよと言われてsudo apt updateしたところ、全部のサーバーに疎通してない。

もしかしてと思って冒頭のpingを打ったところ疎通してないことを確認したのである。

Hyper-Vの設定は特に問題なかった
image.png

このため再度Windows10を再起動して解決に至った

解決を難しくした原因

少し前にWindows10を再起動していたためHost側は関係ないと思っていたがそうではなかった。

再起動直後くらいに、Wi-Fiへの接続が切れたため、トラブルシューティングツールからネットワークアダプターのリセットを行っていた。このときにHyper-VのDefault Switchがおかしくなったと考えられる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0