【Docker】phpMyAdminを使わずにMySQLを操作する方法(CLI編)

Docker

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ファイルの流し込みやバックアップ・リストアもコマンド一発で実行でき、開発環境の自動化やチームでの共有にも役立ちます。