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 から接続するときには必要なんだろう。