Docker上出来状しているMySQLのDBサーバーにアクセスして、MySQLを実行する方法について。
Docker上のMySQLコンテナに入る
まずは 、docker ps コマンドで、現在起動しているコンテナを確認する。
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db17e4d0fc2b wordpress:latest "docker-entrypoint.s…" 42 hours ago Up 28 hours 0.0.0.0:10090->80/tcp, :::10090->80/tcp wp
d01dd3b83a41 phpmyadmin/phpmyadmin:latest "/docker-entrypoint.…" 42 hours ago Up 28 hours 0.0.0.0:10099->80/tcp, :::10099->80/tcp phpmyadmin
dab19e479a65 mysql:5.6 "docker-entrypoint.s…" 42 hours ago Up 28 hours 3306/tcp wp_mysql
上記例の場合、3つのコンテナが起動している。(1)WordPress, (2)phpMyAdmin, (3)MySQL。この中でMySQLの対話モードに入れるのは(3)MySQL コンテナ。(phpMyAdminではない)
コンテナの中に入るコマンドは以下になる。
$docker exec -it コンテナ名 bash
> docker exec -it wp_mysql bash
root@dab19e479a65:/#
MySQLの対話モードを起動する
コンテナに入ったら、まずはMySQLが存在してるか確認する。
$ mysql –version でバージョン情報が表示されれば、MySQLがインストールされている。
root@dab19e479a65:/# mysql --version
mysql Ver 14.14 Distrib 5.6.51, for Linux (x86_64) using EditLine wrapper
バージョンが確認できたら、ルートユーザーとしてMySQLにログインする。以下コマンドを実行。
$mysql -u ルートユーザー名 -h ホスト名 -pパスワード
オプション | 内容 | 必要性 | デフォルト |
-u | ユーザー名 | 必須 | root |
-h | ホスト名 | 省略可(localhostとみなす) | localhost |
-p | パスワード | 必須 | root |
※「-p」のパスワード指定時の注意点
・「-p」の後に空白を入れずにパスワードを記述する
・「Warning: Using a password on the command line interface can be insecure.」セキュリティの警告がでるが問題ない。警告を出したくない場合は以下で対応可能。
・「-p」の後ろに空白を入れ、パスワードを指定しなければ、コマンド実行後にパスワードを聞かれる。入力している文字は表示されないが、パスワードを入力してEnterをクリックすればログインできる。
・「-p」は「–password」と同じ。
デフォルトの設定の場合
もし、MySQLの設定がデフォルトのままで、ルートユーザーの情報などを変更していない場合は以下の設定になっている。
- ルートユーザー名: root
- ホスト名: localhost ※省略可能
- パスワード: root
次のコマンドを実行すればルートユーザーとしてログインできる。
# mysql -u root -proot
以上でDocker上のMySQLコンテナの対話モードの起動が完了。これでSQLが実行できる。
MySQLの対話モードとDockerコンテンナから抜ける
MySQLの対話モードとDockerコンテンナから抜けるには、どちらも「exit」を使う。
mysql> exit
Bye
root@dab19e479a65:/# exit
exit
>
(補足)docker上でMySQLを起動するためのdocker-compose.yml
version: "3.7" # docker-composeの書式のバージョン
services: # 以下にサーバ情報を記載
db: # データベースサーバ(MySql)名(任意の名前を指定可)
image: mysql:5.6 # 使用するデータベースのイメージ名とバージョン(https://hub.docker.com/_/mysql)
container_name: wp_mysql
#restart: always # PC再起動時などDocker自体が起動したときにこのサーバも自動で起動するよう設定
environment: # 環境変数
MYSQL_ROOT_PASSWORD: root # rootユーザのパスワード(任意に指定可)
MYSQL_DATABASE: wp_db # WordPress用データベース名(任意に指定可)
MYSQL_USER: wp_user # WordPress用接続ユーザ名(任意に指定可)
MYSQL_PASSWORD: root # WordPress用パスワード(任意に指定可)
wordpress: # アプリケーションサーバ(PHP,WordPress)名(任意の名前を指定可)
image: wordpress:latest # 使用するWordPressのイメージ名とバージョン(latestは最新を表す https://hub.docker.com/_/wordpress)
container_name: wp
#restart: always # PC再起動時などDocker自体が起動したときにこのサーバも自動で起動するよう設定
depends_on: # 先に起動させるサーバを指定
- db
ports:
- "10090:80" # アプリケーションサーバの80番ポートをローカルの10080番ポートにつなげる(http://localhost:10080 でアクセスできるようになる)
environment:
WORDPRESS_DB_HOST: db:3306 # データベースサーバ名:ポート番号
WORDPRESS_DB_USER: wp_user # WordPress用接続ユーザ名(dbの内容に合わせる)
WORDPRESS_DB_PASSWORD: root # WordPress用パスワード(dbの内容に合わせる)
WORDPRESS_DB_NAME: wp_db # WordPress用データベース名(dbの内容に合わせる)
volumes:
- ./html:/var/www/html
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: phpmyadmin
#restart: always
depends_on:
- db
ports:
- 10099:80