結論
ipv6で接続する。
Javaで接続する場合はjdbcの設定を以下のようにする
jdbc:mysql://address=(protocol=tcp)(host=::1)(port=3306)(user=root)/db
事象
Docker上のMySQLにしばらく接続していると、何かのタイミングでMySQLへの接続がけられるようになる。
エラーは以下の通り
access denied for user 'root'@'localhost'
- MySQL Workbenchではなぜか接続できる
- OSを再起動してもなぜか接続できる
- ゲストOSを落とすとエラーは変わる
- 127.0.0.1で設定してみてもダメ
- Dockerの再起動でもダメ
ググってみてもrootの権限が足りないだのなんだの…こちとらさっきまで接続できていたんじゃい!
原因
根本原因がわからん…だれかデバッグ方法教えてくれ
ただネットワークがらみっぽい感じではある。
127.0.0.1
でだめな理由は多分localhostに勝手に読み替えられていたのだと思う。
対応
ipv6で指定することで無事接続ができた。
なんでやねん…。