MariaDB には mysql コマンドで接続できるはずだけど、Docker コンテナに乗ってるときには追加のオプションが必要だったので、メモしておく。
docker-compose.yml はこんなの。
version: "3"
services:
db:
image: mariadb:10.5.6-focal
container_name: test-db
restart: always
ports:
- 8802:3306
volumes:
- ./mysql:/var/lib/mysql
- ./initdb.d:/docker-entrypoint-initdb.d
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
- MYSQL_USER=test
- MYSQL_PASSWORD=test
- BIND-ADDRESS="0.0.0.0"
tty: true
コンテナを起動する。
takatoh@apostrophe:test$ docker-compose up -d
で、ポート 8802 に繋いであるんだからそれを指定してやればいいんだろうと、次のようにやったらダメだった。ポートを指定してるのにソケットがないと怒られる。
takatoh@apostrophe:test$ mysql -u root -p -P 8802 Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
解決策は簡単に見つかった。次のようにすればいい。
takatoh@apostrophe:test$ mysql -u root -p -h localhost -P 8802 --protocol tcp
--protocol オプションで tcp を使うってことを明示する。-h オプションはなくても大丈夫だった。多分ほかの PC から接続するときには必要なんだろう。