MySQLにVScodeで接続するための備忘録

Oracle CloudのMDSにVScodeで接続するためにやったことを忘れないように書く。
ローカルからの接続なので、Bastionを利用した踏み台経由接続を利用。

### 今回発生した問題
MDSのMySQLバージョンは8.0以上のためデフォルトの認証方式に「caching_sha2_password」が採用されているみたい
VScodeはこの認証方式をサポートしていないみたい(?)なので、VScodeがMDSに接続できるように対象ユーザの認証方式を「mysql_native_password」に変更する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610268/1ef5e2cf-73be-59e2-507c-02db1ad3aea7.png)

### 認証方式を変更する
まずは、MySQLクライアント経由でMDSに接続する
手元のOSがOracle Linux9なので、MySQLコミュニティから該当のパッケージをダウンロード
```
 $ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
```

MySQLのリポジトリが有効化されていることを確認
```
yum repolist enabled
repo id                                                                repo の名前
mysql-connectors-community                                             MySQL Connectors Community
mysql-tools-community                                                  MySQL Tools Community
mysql80-community                                                      MySQL 8.0 Community Server
ol9_UEKR7                                                              Oracle Linux 9 UEK Release 7 (x86_64)
ol9_addons                                                             Oracle Linux 9 Addons (x86_64)
ol9_appstream                                                          Oracle Linux 9 Application Stream Packages (x86_64)
ol9_baseos_latest                                                      Oracle Linux 9 BaseOS Latest (x86_64)
ol9_developer_EPEL                                                     Oracle Linux 9 EPEL Packages for Development (x86_64)
ol9_ksplice                                                            Ksplice for Oracle Linux 9 (x86_64)
ol9_oci_included                                                       Oracle Linux 9 OCI Included Packages (x86_64)
```

クライアントパッケージをインストール
```
$ sudo yum install mysql-community-client
```

MDSに接続し現在の認証方式を確認
```mysql
$ mysql -u admin --host 接続先 -p

mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| admin            | %         | caching_sha2_password |
| administrator    | %         | caching_sha2_password |
| ocirpl           | %         | caching_sha2_password |
| ociadmin         | 127.0.0.1 | caching_sha2_password |
| ocidbm           | 127.0.0.1 | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
```

adminユーザでVScodeから接続したいので、adminの認証方式を変更する
（本来はやってはいけない気がするけど、検証用途なのでOK）
```mysql
 mysql> ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'パスワード';

 mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| admin            | %         | mysql_native_password |
| administrator    | %         | caching_sha2_password |
| ocirpl           | %         | caching_sha2_password |
| ociadmin         | 127.0.0.1 | caching_sha2_password |
| ocidbm           | 127.0.0.1 | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
```

### これで完了
ホスト情報やユーザ名やパスワードを所定の操作で入力することでVScode経由で接続できた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610268/6043b215-b7a9-bc47-f79a-1e6a54a5f4c4.png)

接続方法の詳細とか認証方式の変更はこちらを参考にさせていただきました。
https://mebee.info/2021/12/22/post-52376/

MySQLのクライアントインストールについてはこちらを参考に。
https://kcfran.com/2022/11/17/mysql80-install-linux/

いつも忘れてしまうので、今後は忘れないように。。