環境
OS :macOS Catalina version: 10.15.13
MySql: version: 5.7.26
クライアントツール: Sequel Pro
事象
クライアントツールでDockerコンテナにあるDBサーバーにアクセスできない。
原因
docker-compose.ymlでDBサーバのポートを指定をしていなかったため。
docker-compose.yml
db:
image: mysql:5.7
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
解決策
ポートを追加する。
ホストのOS(自分のPC)から繋ぐ時はポートが必要。
docker-compose.yml
db:
image: mysql:5.7
# 下記のようにポートを指定
ports:
- 3306:3306
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
ちなみに、、、
下記コマンドでDockerコンテナに入り、
$ docker-compose exec db bash
mysqlコマンドでログインすると、ポート番号なしでもログインできます
root@******:/# mysql -u root -h 127.0.0.1 -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.26 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
また、MySQLのver8以降の場合SequelProで接続出来ないようです。
私は今回version: 5.7だったのであまり詳しくは触れませんが、その場合は下記を参考にしたら良いかもしれません
Sequel ProでMySQLにログインできない