MySQLをDockerコンテナで利用する場合、phpMyAdminのようなGUIツールを使わずに、コンテナ内のCLIから直接操作することも可能です。CLIを活用すれば軽量かつシンプルにデータベースを管理でき、スクリプトによる自動化にも向いています。ここではDocker環境でMySQLをCLIから操作する方法を解説します。
コンテナの起動と確認
まずはdocker-composeやdocker runでMySQLコンテナを起動しておきます。起動後は稼働状況を確認します。
# 稼働中のコンテナ一覧を表示
docker ps
# 特定コンテナのログを確認
docker logs mysql_container
コンテナ内のMySQL CLIに接続する
docker execコマンドを使って、MySQLのCLIクライアントに入る方法です。
# rootユーザーで接続
docker exec -it mysql_container mysql -u root -p
実行するとパスワード入力を求められ、ログイン後は通常のMySQLプロンプトになります。
ホストからMySQLに接続する
MySQLコンテナの3306ポートをホストに公開していれば、ホスト側にインストールしたmysqlクライアントから直接接続することも可能です。
# ホストから接続
mysql -h 127.0.0.1 -P 3306 -u root -p
よく使う基本コマンド
ログイン後は通常のMySQL操作と同じです。
# データベース一覧
SHOW DATABASES;
# データベースを選択
USE my_database;
# テーブル一覧
SHOW TABLES;
# テーブル構造を確認
DESCRIBE users;
# データの挿入
INSERT INTO users (name, email) VALUES ('Taro', 'taro@example.com');
# データの取得
SELECT * FROM users;
SQLファイルを実行する
スキーマ定義や初期データを含むSQLファイルを一括で流し込む場合は、リダイレクトを使います。
# コンテナ内でSQLを実行
docker exec -i mysql_container mysql -u root -p my_database < init.sql
バックアップとリストア
mysqldumpを利用してデータをエクスポート/インポートできます。
# バックアップ(エクスポート)
docker exec mysql_container mysqldump -u root -p my_database > backup.sql
# リストア(インポート)
docker exec -i mysql_container mysql -u root -p my_database < backup.sql
まとめ
Docker環境でMySQLを操作する際、phpMyAdminなどを使わなくてもCLIだけで十分に管理が可能です。docker execを使って直接コンテナに入り、基本コマンドでデータベースを操作できます。さらにSQLファイルの流し込みやバックアップ・リストアもコマンド一発で実行でき、開発環境の自動化やチームでの共有にも役立ちます。