Docker(mysql)コンテナに接続してSQLを実行する

当ブログの過去記事「WordPress手動バックアップとDocker環境へのリストア」ではDocker環境へのDBリストアはphpmyadmin上からSQLを実行する前提でした。しかしセキュリティリスク等何らかの理由でphpmyadminをインストール出来ない環境もあるかと思います。ここでは前回紹介しなかったコンテナ上で直接SQLを実行する手順を紹介します。

1.前提

WordPress等のDBをバックアップしたSQLファイルはすでに取得済みであること。
バックアップから始める場合はこちらの記事を参考にしてください。

ここでは、Wordpressの環境をbackup.sqlにバックアップ済みかつwordpressコンテンツのURLを置き換える「URL_UPDATE.sql」を準備済みの前提とします。

2.ファイルコピー

バックアップしたSQLファイルをホストにSCP又はFileZilla 等でコピーします。ホストのSQLファイルをコンテナにコピーします。カレントディレクトリは、/home/docker/test/phpsqlコンテナへのファイルコピーはdocker cp コマンドを使用します。

コピー先にコンテナIDを指定しますので対象のコンテナIDを調査します。

コンテナIDがわかったのここではmysqlコンテナの「b3fa7acc846f」を使用します。WordpressのバックアップSQL「BACKUP.sql」とコンテンツのURL置換SQL「URL_UPDATE.sql」をコンテナの/tmp/フォルダにコピーします。

コピー結果を確認するため、コンテナにターミナルで接続します。

3.コンテナ内でSQL実行

コンテナにターミナルで接続した環境でmysqlに接続してからSQLコマンドを実行します。

対象DBはwp_dbwordpressとして既に存在していることとします。

今回DBを新規に作成する場合は、以下のスクリプトを参考にDBと接続ユーザを作成する
SQLを実行してください。

4.ホストからコンテナに接続しSQLを実行

Docker exec -it コマンドでコンテナにターミナル接続しなくてもmysqlコマンドを実行できます(但しSQL実行に成功するのはSQLファイルが小さい場合のみです)。SQLファイルが大きい場合はコンテナにターミナル接続してSQLを実行するかphpmyaminを使用してSQLを実行するかのいずれかを選択する必要があります。

5.参考にさせてい頂いたサイト

Dockerコンテナ内に入らずにMySQL公式コンテナの中にSQL等を実行するメモ

ありがとうございます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする