Dockerに構築したRails + MySQLに対し、DBeaverで接続する


ポートフォワードを理解しないでハマったので記述。
タイトルの通り、「DockerでRailsとMySQLで環境を作り、DBeaverでMySQLに接続する」ということをしたかったので、それまでの道のり。

環境

  • Docker
  • Rails 5.2.4.1
  • MySQL 5.7
  • DBeaver

Dockerに接続設定をする

ホストからDockerに接続するので、「この番号のポートに接続したら、こっちのポートに転送してください」という設定をします(ポートフォワード)。

docker-compose.yml
version: '3'
services:
  web:
    (略)
  db:
    image: mysql:5.7
    volumes:
      - db-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD:****
    ports:
      - 3006:3306

肝はportsです。

- (ホストから接続するポート):(転送先のポート)

上記の設定だと「3006のポートに接続したら、dockerの3306ポートに転送する」という設定です。
MySQLはデフォルトで3306ポートを使用していますので、環境構築時に特に指定していなければこのままで。

DBeaverの設定

接続設定を開き、MySQLを選択。

Server Hostに「127.0.0.1」を設定。
Portは先程Docker-compose.ymlに設定した左側のポート番号。
あとはユーザー名とパスワードを設定し、テスト接続ボタンを押して繋がればOK。