wsl2でUbuntu上に構築したMysqlにMySQL WorkBenchでアクセスする

# はじめに

「wsl2のUbuntu上のMySQL」と「Windows上のMySQL」がある状態で、WindowsPCにインストールしたMySQL WorkBenchからそれぞれのMySQLにアクセスするためにやったことを残しておきます。

# 環境

それぞれのバージョンは下記の通りです。

## WindowsのMySQL

Microsoft Windows [Version 10.0.19043.1889]
mysql Ver 8.0.29 for Win64 on x86_64 (MySQL Community Server - GPL)

※MySQL WorkBenchをインストールするときに一緒にインストールした気がします。。

## UbuntuのMySQL

Ubuntu 18.04.6
mysql  Ver 14.14 Distrib 5.7.38, for Linux (x86_64) using  EditLine wrapper

インストール手順はこちらの記事も参考にしました。

https://qiita.com/kamina/items/35169738c57978b669c0

# 試したけどダメだった方法

* rootユーザーじゃダメ説

https://stackoverflow.com/questions/60902050/connect-mysql-workbench-on-wsl-mysql

* 127.0.0.1じゃダメでlocalhostにしたら行ける説

https://www.web-dev-qa-db-ja.com/ja/mysql/mysql-workbench%E3%82%92wsl2%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%BE%E3%81%99/997998265/

* localhostでもだめで、wslのIPを使わないといけない説

https://snowsystem.net/container/docker/docker-mysql-wsl-a5sql/#

※解決策を探す中で検証しましたが、これではアクセスできるようにはなりませんでした。

# 解決策

今回は、WindowsとUbuntuのMySQLの使用するポートを重複しないようにすることで接続することができました。具体的にはWindowsは3307ポート、Ubuntuは3306ポートを使用します。

# Windowsのポート変更する手順

起動ポートは設定ファイル`my.ini`を編集すれば、変更ができます。

※管理者権限で起動したコマンドプロンプトからメモ帳でファイルを開くと、簡単に編集が可能です。
```
C:\Users\kuromame_09> notepad "C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
```

portを3307に変更したら、忘れずに保存します。

```C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]

# pipe=

# socket=MYSQL

port=3307
```

設定後はサービスでMySQLを再起動しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587208/784281f5-424a-0529-8c07-72ce759f21e7.png)

## WindowsのMySQLの疎通確認

Portを3307にしてTest Connectionを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587208/84f2f3b9-91dd-0e61-9e07-02b06fad48e2.png)
3307ポートでアクセスできているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587208/79701c26-d45f-d59c-d89f-0164b40612b4.png)

## UbuntuのMySQLの疎通確認

Portを3306にしてTest Connectionを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587208/35245c99-9595-1e2b-1ace-65ea35659b49.png)
こちらは、3306ポートでアクセスできています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587208/1fe7c607-45aa-8a9f-b7c7-12b29756083f.png)

# 最後に

ポートを変えてから再度、試してみましたが、rootアカウントで問題ないですし、127.0.0.1でもlocalhostでもアクセスできました。ちなみに、wslのIPを設定しても接続はできません。

WindowsのMySQLをアンインストールするなどの方法もきっとあったのですが、残したまま両方アクセスできる方法があればそれでいいなと思い、今回、ポート変更でそれぞれのMySQLへのアクセスを試みました。もちろん場合によっては、Ubuntu上のMySQLのポートを3307にするのでもいいと思います。

# 参考







https://style.potepan.com/articles/19084.html#:~:text=%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABmy.ini%E3%81%AE,%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AB%E4%BD%9C%E6%88%90%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82&text=MySQL%20Worckbench%E3%81%AEServer%E2%86%92,%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

https://stackoverflow.com/questions/58905555/cannot-connect-to-mysql-database-running-on-wsl2-from-windows-desktop-applicat