OCI MarketplaceからMySQLインスタンスを作成する手順

このシリーズの他の記事は、[オラクル・クラウドの個人ブログ一覧 ](https://qiita.com/letian/items/10152a4fec813c1b7d98)からご覧いただけます。

# 初めに

__環境情報__

| 項目 | 値 |
|:-|:-|
|MySQL バージョン|MySQL Enterprise Edition|
|Marketplace イメージ|8.4.2-1|
|接続ツール|Tera Term 5.0 ([ダウンロード]())|
||MySQL Workbench 8.0 ([ダウンロード](https://www.mysql.com/products/workbench/))|

__目次__
- [1. OCI MarketplaceからのMySQLインスタンスの作成](#1-oci-marketplaceからのmysqlインスタンスの作成)
- [2. MySQLインスタンスへの接続](#2-mysqlインスタンスへの接続)
  - [2-1. SSHでインスタンスにログインする](#2-1-sshでインスタンスにログインする)
  - [2-2. WorkbenchでMySQLに接続する](#2-2-workbenchでmysqlに接続する)

# 1. OCI MarketplaceからのMySQLインスタンスの作成
コンピュート → インスタンス → 「インスタンスの作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/05e12ce8-3796-ff8a-efdf-974046811ae1.png)

イメージの変更 → Marketplace → "mysql"を検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/680b1928-5b73-e4aa-f61c-8a2d722db653.png)

"<strong>MySQL Enterprise Edition</strong>"を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/68654680-c25e-0dde-1d5a-e9980e11a76f.png)

選択後：
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/bcdc66f1-85c1-071c-846d-eba830a40c4e.png", width="600">

インスタンスの入力項目は、通常のインスタンス作成時と同様です。この例では次の通りです。その他の項目はデフォルトのままで問題ありません。

- インスタンス名：mysql-marketplace (ホスト名が未入力の場合、インスタンス名と同じになる)
- VCNとサブネット：プライベート・サブネットで作成する
- SSHキー：パブリック・キーをアップロードする

項目を入力した後、作成ボタンをクリックすると、インスタンスの作成が開始されます（約1分で完了します）。

# 2. MySQLインスタンスへの接続
接続クライアントは、同じVCN内に配置されているWindowsサーバーです。踏み台（またはNLB）を経由すれば、ローカルからの直接接続も可能です（この例では省略します）。

__事前準備__
- Tera TermとMySQL Workbenchはインストール済。
- MySQLインスタンスの<strong>NSG</strong>（or セキュリティリスト）に、次のようにイングレス・ルールを追加する。
ソースCIDR: 接続元（Windowsサーバー）のIP
プロトコル: TCP  ポート：22, 3306

## 2-1. SSHでインスタンスにログインする
１. MySQLインスタンスにSSHログインする。

ホスト名：以下から1つの方法を選択してください。
- <strong>IPアドレス</strong>を入力 (例：10.0.xx.xx)
- <strong>ホスト名</strong>を入力（デフォルトでは、インスタンス名と同じ）。
"C:\Windows\System32\drivers\etc"に、`10.0.xx.xx mysql-marketplace`のエントリーを追加する
- ホスト名の<strong>内部FQDN</strong>を入力（OCIのコンソールから取得できる）
例：`mysql-marketplace.privatesubnet01.vcn01.oraclevcn.com`

ユーザー名: <strong>opc</strong>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/5f1b8583-6625-d756-3119-6d0550ec0bc0.png", width="350">

２. rootユーザーの初期パスワードを取得する。
コマンド： `sudo grep 'temporary password' /var/log/mysqld.log`
```bash
[opc@mysql-marketplace ~]$ sudo grep 'temporary password' /var/log/mysqld.log
2024-08-11T04:15:46.314171Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: T7vdzhcub,P#
[opc@mysql-marketplace ~]
```

３. 初期パスワードでログインする。
MySQL clientは、既にインストール済。"<strong>mysql -V</strong>"でバージョンを確認する。
```bash
[opc@mysql-marketplace ~]$ mysql -V
mysql  Ver 8.4.2-commercial for Linux on x86_64 (MySQL Enterprise Server - Commercial)
```

ログインコマンド：`mysql -u <username> -p<password>`
```bash
[opc@mysql-marketplace ~]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.4.2-commercial
<中略>
mysql>
```

４. rootユーザーの初期パスワードを変更する
```sql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '<Password>';
Query OK, 0 rows affected (0.01 sec)
```

５. VCN内部からのアクセスを許可するために、新ユーザーを作成する
この例では、「root@VCN's CIDR」のユーザーを作成する。
```sql
mysql> create user 'root'@'10.0.0.0/16' identified by '<Password>';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all privileges on *.* to 'root'@'10.0.0.0/16';
Query OK, 0 rows affected (0.01 sec)
```

便利のコマンド例:
```sql
select user, host from mysql.user;  -- 全てのユーザーを表示
select user();  -- 現在のユーザーを表示
select database();
```

## 2-2. WorkbenchでMySQLに接続する
__ネットワーク設定__
OSのTCP 3306ポートを開けます。
```bash
[opc@mysql-marketplace ~]$ sudo firewall-cmd --permanent --add-port=3306/tcp  
success  
[opc@mysql-marketplace ~]$ sudo firewall-cmd --reload  
success  
[opc@mysql-marketplace ~]$ sudo firewall-cmd --list-ports  
<中略>
```

NSGかセキュリティ・リストのイングレス・ルールにもTCP 3306ポートを追加する必要があります（省略）。

__接続画面__
MySQL Workbenchに接続情報を入力し、テスト接続を実施します。

ホスト名：ホスト名、またはIPアドレスまたは内部FQDN
ポート：<strong>3306</strong>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/813770f7-38e2-a926-3802-9ac06af18dbf.png", width="600">

警告メッセージが表示されると、続行を押します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/37becf18-9c8b-4fd8-284a-7b0e7b0dc1e8.png", width="350">

接続成功の場合、次のようなメッセージが表示されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/282dede2-3758-9b70-1182-ecab8d89ecf3.png", width="350">

SQL DeveloperでもMySQLに接続できます。それを使いたい方は、次の記事をご参照ください。
[SQL Developerで様々なDBに接続する方法](https://qiita.com/letian/items/08f2e2f6d90c08549cbf) (5-1. MySQL on OCI Marketplaceへの接続)

以上

----
**関連記事**
[SQL Developerで様々なDBに接続する方法](https://qiita.com/liu-wei/items/08f2e2f6d90c08549cbf)
[OCI Bastion経由でMySQL Cloud Serviceに接続](https://qiita.com/liu-wei/items/e86e01ac3d61999aa811)