はじめに
OCI(Oracle Cloud Infrastructure)でMySQL HeatWave DBシステムを作成したけれど、「どうやって接続するの?」と迷ったことはありませんか?
MySQL HeatWaveのDBシステムはプライベートサブネット内に配置されるのが基本なので、インターネットから直接接続することはできません。本記事では、OCI Bastionサービス 経由でOCI MySQL HeatWaveに接続する手順を解説します。
構成イメージ
参考情報はこちら
https://speakerdeck.com/oracle4engineer/bastion-overview?slide=5

前提条件
- OCIアカウントを持っていること
- MySQL HeatWave DBシステムが作成済みであること
(参考手順:その9 - クラウドでMySQL Databaseを使う) - ローカルPCにMySQL接続用のクライアントツールがあること
クライアントツールの準備
今回は、MySQL Shellを想定した手順とします。
https://dev.mysql.com/downloads/shell/
手順
1. Bastionの作成
OCIコンソールで「アイデンティティとセキュリティ」→「要塞」へ移動し、「要塞の作成」をクリックします。
※OCIコンソールのメニューを日本語化している場合、Bastion=要塞
以下のように設定します。
| 項目 | 設定値 |
|---|---|
| 要塞名 | 任意 |
| ターゲット仮想クラウド・ネットワーク | MySQL DBシステムと同じVCN |
| ターゲット・サブネット | (クライアントPCから接続できるように)パブリックサブネット |
| CIDRブロック許可リスト | 接続元のグローバルIP(例: xxx.xxx.xxx.xxx/32) |
CIDRブロックは必ず絞ってください。 0.0.0.0/0 を設定すると、世界中からアクセス可能になり危険です。自分のグローバルIPは https://ifconfig.me などで確認できます。
2. Bastionセッションの作成
作成したBastionの詳細画面で「セッション」タブを開き、「セッションの作成」をクリックします。
| 項目 | 設定値 |
|---|---|
| セッション・タイプ | SSHポート転送セッション |
| セッション名 | 任意 |
| ターゲット・ホストへの接続 |
IPアドレスにチェック |
| IPアドレス | OCI MySQLのプライベートIPアドレス ※分からない場合は、この設定画面を下にスクロールするとMySQLの設定画面が表示されています |
| SSHキー・オプション | 「SSHキー・ファイルの選択」など、ご自分の方法で公開鍵を登録。キーがない場合は、「SSHキー・ペアの生成」よりダウンロード |
セッションが作成されたら、「︙」メニューから「SSHコマンドのコピー」でコマンドをコピーしておきます。
3. クライアントPC(Windows)からBastion経由での接続をテスト
コピーしたSSHコマンドの <privateKey> 部分を、登録した公開鍵に対応する秘密鍵のパスに書き換えて、ターミナルで実行します。
ssh -i <秘密鍵のパス> -N -L <ローカルポート>:<MySQLのプライベートIPアドレス>:3306 -p 22 <BastionセッションのOCID>@host.bastion.<region>.oci.oraclecloud.com
例:
ssh -i "C:\SAMPLE\SSH_key\ssh-key-2026.key" -N -L 3306:<MySQLのプライベートIPアドレス>:3306 -p 22 <BastionセッションのOCID>@host.bastion.<region>.oci.oraclecloud.com
ローカルに既にMySQLがインストールされている等の理由で、3306ポートが競合する場合は別のポートに変更します。
ポートフォワーディングに成功した場合、以下のように無言の状態が正常です。

MySQL Shellの接続確認
SSHトンネル用のPowerShellウィンドウはそのままにしておきます。
もう一つのPowershellを立ち上げ、以下のコマンドで接続します。
mysqlsh -u <管理者ユーザー名> -h localhost -P 3306
ハマりどころ1: Bastionサブネットからの3306ポート許可
DBシステム側のサブネットのセキュリティ・リスト(またはNSG)で、
Bastionのサブネットからの3306ポート(TCP)が許可されている必要があります。
ハマりどころ2: セッションの有効期限
Bastionセッションには最大3時間の有効期限があります。切れたら新しいセッションを作り直して、新しいSSHコマンドを取得してください。
まとめ
OCI Bastion経由でMySQL HeatWaveに接続する手順を紹介しました。
MySQL HeatWaveを使い始めるときの参考になれば嬉しいです!
