この記事では、dockerで起動したMySQLに、mysqlコマンドで接続する方法を説明します。
次のようなdocker-compose.ymlを記述し、
$ docker-compose up -d
によりコンテナを起動します。
version: "3"
services:
db:
container_name: db
image: mysql:8
restart: always
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
ports:
- 3306:3306
networks:
okozukai-network:
networks:
okozukai-network:
networks:の名前は任意でOK。
MYSQL_DATABASE="okozukai"
MYSQL_USER="okozukaiadmin"
MYSQL_PASSWORD="xxxx"
データベースやユーザー、パスワードはdocker-compose.ymlに直接書いてもOKですし、.envに定義してもOKです。
docker desktopのCLIボタンから、コンテナにターミナル接続します。
コマンドの場合は、
$ docker exec -it コンテナ名 /bin/sh
でもOKです。
// MySQLコンテナに接続
noricgeographic@MacBook-Air ~ % docker exec -it 9b0fe464c6d3fef03d97f50e4b6b3c6f6d95621f6aa105a34d8da7a3b76cdc35 /bin/sh
// MySQLに接続
# mysql -u okozukaiadmin -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
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> use okozukai;
Database changed
// テーブル一覧を表示 など
mysql> show tables;
Empty set (0.02 sec)
4行目...MySQLに接続するときは -p オプションをつけないと、エラーになります。
20行目...docker-compose.ymlで指定した「MYSQL_DATABASE」を選択します。
そうすると、後はいつものSELECT文やINSERT文などを発行できます。
ただし、コンテナ起動直後はテーブルは何もありません。(20行目)