はじめに
DockerのMYSQLコンテナにSequelProを接続しようとしたところ、アクセスを拒否されてしまったので、正しい接続方法について調べました。
この記事では、その成功した方法について記します。
ステップ① まずdocker-compose.ymlを確認
docker-compose.ymlの中身を確認して、現在のDB(MySQL)コンテナの設定がどうなっている確認する。
version: '3'
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
db:
image: mysql:5.7
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: *******
volumes:
db-volume:
某UdemuyのRailsの教材通りにdocker-compose.ymlを記述したのでこんな感じ。
はじめてのDockerを使った開発だったので、SequelProにいつも通り接続してみるとデータベース一覧にあると思っていたデータベース名が無いことに気づく。
「あ、あれ〜?汗」
ステップ② 検索してみると、「port」と「port番号」の記述が必要だとわかる
どうしたらDockerのMySQLコンテナにSequelProで接続できるのか検索してみたところ、docker-compose.ymlファイルのDB(MySQL)コンテナ下に「port」と「port番号」の記述が必要だとわかる。
【修正前】
db:
image: mysql:5.7
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: *******
【修正後】
db:
image: mysql:5.7
volumes:
- db-volume:/var/lib/mysql
ports:
- '4306:3306'
environment:
MYSQL_ROOT_PASSWORD: *******
MYSQL_USER: root
MYSQL_DATABASE: root
MYSQL_PASSWORD: *******
新しくportsとports番号を追加。(enviromentにも何行か追加)
このport番号の「4306:3306」だが、「3306:3306」でも良いらしいが、localhostですでにmysqlを利用している場合は4306にしなくちゃいけないとのこと。
docker-compose.ymlを編集したら「docker-compose up -d」でコンテナを起動。
ステップ③ SequelProに接続してみる
SequelProを開いて、画像赤枠の「標準」をクリック。
docker-compose.ymlに記述した通り、ポートは4306にする。ホストは「127.0.0.1」になっているが、ここら辺については以下の記事が参考になった。
参考記事:「127.0.0.1とlocalhostと0.0.0.0の違い」
参考記事:「localhost と 127.0.0.1 の違い」
データベース一覧を見たところ、しっかりSequelProで見れるようになってた!感動。