0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCode Remote ContainersからWSL2上のdockerで起動しているmysqlに手軽に接続する

Last updated at Posted at 2021-02-14

前提環境

  • 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を利用して接続することができます。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?