前提環境
- Windows10
- WSL2/docker
- VSCode Remote Containers
mysqlの設定(設定済みの人は読み飛ばしてください)
WSL2/dockerでのmysqlを起動する
WSL2上でdockerコマンドを使ってmysqlのイメージを取得・起動します。ホスト側の3306ポートとdocker内の3306ポートを接続しておきます。
docker pull mysql:5.6
docker run -it --name test-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysql -d mysql:5.6
docker exec -it test-mysql bash -p
## mysqlへのログイン
mysql -u root -p -h 127.0.0.1
mysqlの設定
mysqlにログインして、ユーザの作成・権限の付与を行う。
-- version 確認
select version();
-- データベース作成
create database db1;
show databases;
-- ユーザの作成・権限付与
create user 'user'@'%' identified by 'password';
grant all on db1.* to 'user'@'%';
外部から接続できるようにmysqlの設定を変更する。
echo "bind-address = 0.0.0.0" >> /etc/mysql/conf.d/mysql.cnf
devcontainer(docker)でmysql-clientをインストール
mysql-clientのインストール
本当は.devcontainer/Dockerfile
を修正してReopenしてあげるべきなのでしょうが、開きなおすのが手間なので、直接devcontainer内で実行してしまいます。
sudo apt update
sudo apt install default-mysql-client-core
devcontainerからmysqlへ接続
mysqlのdockerを起動する際にホスト(Windows)の3306ポートとdockerの3306ポートを接続しているので、devcontainerからホストの3306ポートに向けて接続をすると、ホスト経由でmysqlのdockerにアクセスできます。
mysql -u remoteuser -p -h host.docker.internal
3306ポートがmysqlのデフォルトなので特に指定する必要はありません。また、ホストのipはhost.docker.internal
を利用して接続することができます。