DBeaverからWSL上で起動しているMySQLコンテナに接続する
UbuntuからWindowsのWSL環境に乗り換えてしばらく経ちますが、なんかうまくいかない状況が続いていて、さっさとやらないとなと思っていたのですが、ようやくできたかつ地味にハマったので覚書。
環境
- Windows 11 Pro
- WSL2 ubuntu 22.04.1
- docker 24.0.5
- MySQL 8.0 (8.0-bookwormのイメージを使用)
やったこと
結論から先に書いておくと、DBeaverから接続するhostのIPアドレスをWSLのIPアドレスにしました。
これだけ。
Docker Composeを使用しており、設定ファイルは一部抜粋ですがこのようになっています。
version: '3.1'
services:
:
db:
build: ./docker/mysql
volumes:
- api-db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
TZ: 'Asia/Tokyo'
ports:
- 3306:3306
:
ポートを変更する話も見かけたけど、WSL上で直接MySQLを起動していなかったので、そこは必要がなかった。
[Docker][WSL2] WSL2 の Docker 上で動く MySQL に ホストマシンから繋ぐ
DBeaverでの接続時にPublic Key Retrieval is not allowedが発生する
MySQL 8.0からの機能らしく、安全な通信ができない場合にエラーになるらしい。
記事からの引用ですが、以下の手順で解消できました。
- 接続設定画面を開く
- ドライバのプロパティタブを開く
- allowPublicKeyRetrievalをTRUEにする
MySQL接続時に「Public Key Retrieval is not allowed」が出る件│おくやんのテックダイアリー
できてみて
MacのときはDocker for Macで起動してたらlocalhostで繋がったのになとか思ってましたが、Windowsの上でWSL(Ubuntu)が動いていてみたいな想像をするとまぁそうかという感じでした。
落ち着いて考えればハッとすることだけど、なかなか気付けなかったな…w