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?

OCIのMySQL HeatWaveにMacから接続するまでの手順

Last updated at Posted at 2025-10-07

概要

Oracle Cloud Infrastructure (OCI)で作成したMySQL HeatWave DBシステムは、セキュリティのためプライベートIPアドレスしか持ちません。これを外部(今回はMac)のMySQLクライアントから接続するために、ネットワーク・ロード・バランサ(NLB)を経由する方法を試しました。その際の手順と、つまずいたポイントをメモとしてまとめます。

1. 前提

  • OCI上にVCN(仮想クラウド・ネットワーク)とサブネットが作成済み。
  • MySQL HeatWave DBシステムが作成済みで、プライベートIPアドレス(例: 10.0.0.172)がわかっている。
  • 【今回の構成】 DBシステムと、後から作成するNLBは、両方とも同じパブリック・サブネットに配置。

2. ネットワーク・ロード・バランサ (NLB) の作成

インターネットからの接続を受け付けるためのパブリックな窓口としてNLBを作成します。

  • 可視性タイプ: 「パブリック」を選択し、パブリックIPアドレスを割り当てる。
  • VCNとサブネット: DBシステムと同じVCNとパブリック・サブネットを選択。
  • リスナーの構成:
    • プロトコル: TCP
    • ポート: 3306 (MySQLのデフォルトポート)
  • バックエンド・セットの構成:
    • 【重要ポイント①】 「ソースの保持」のチェックボックスをオフにする。これをしないと、バックエンドにIPアドレスを指定できません。
  • バックエンドの追加:
    • バックエンド・タイプとして「IPアドレス」を選択。
    • DBシステムのプライベートIPアドレス(例: 10.0.0.172)とポート3306を指定する。

3. ヘルスチェックの設定修正

NLBがDBシステムの状態を正しく監視できるように設定します。ここの設定ミスが原因で、ヘルスチェックが長時間「クリティカル」(赤色)のままでした。

  • NLBの「バックエンド・セット」の詳細画面に移動。
  • 「ヘルス・チェック」の項目を編集。
  • 【重要ポイント②】 プロトコルを HTTP から TCP に変更する。
    • (理由: MySQLはHTTPプロトコルに応答しないため、HTTPのままだとヘルスチェックが必ず失敗します。)

4. ファイアウォールの設定(2段階)

OCIのファイアウォールは「セキュリティ・リスト」と「ネットワーク・セキュリティ・グループ(NSG)」の2層構造です。

【重要】AWSとの違い:ファイアウォールの評価ルール

OCIのファイアウォール用語は、AWSの用語に以下のように対応付けると理解しやすいです。

  • OCI: セキュリティ・リスト (Security List)
    • AWSでいう「ネットワークACL」に相当します。サブネット全体に適用されるファイアウォールです。
  • OCI: ネットワーク・セキュリティ・グループ (NSG)
    • AWSの「セキュリティグループ」に相当します。インスタンスなどのリソース単位で適用されるファイアウォールです。

ここからが重要なのですが、これらのファイアウォールの関係性は、OCIとAWSで根本的に異なります。

  • OCIの場合:「OR条件」

    • 通信は、「セキュリティ・リスト」か「NSG」のどちらか一方でも許可されていれば通過します。
  • AWSの場合:「AND条件」

    • 通信は、「ネットワークACL」と「セキュリティグループ」の両方で許可されていなければ通過できません。

この違いのため、AWSの感覚で「サブネット側(セキュリティ・リスト)は広く全許可にしておき、インスタンス側(NSG)で厳しく絞る」という設定をOCIで行うと、NSGのルールは実質的に無視され、意図せず全世界にポートを公開してしまう危険性があります。
この「OR条件」は、AWS経験者がOCIを触る際に最もつまずきやすいポイントの一つなので、特に注意が必要です。


a) ネットワーク・セキュリティ・グループ (NSG) の設定

目的: 自分のMacからの接続のみを許可する。

  1. 新しいNSGを作成する。(例: NSG-for-MySQL-NLB
  2. 作成したNSGに イングレス・ルール(内向き) を追加する。
    • ソースCIDR: 自分のPCのグローバルIPアドレス/32 (例: 72.14.201.171/32
    • IPプロトコル: TCP
    • 宛先ポート範囲: 3306
  3. 作成したNSGをネットワーク・ロード・バランサに関連付ける
b) セキュリティ・リストの設定

目的: NLBからDBシステムへのヘルスチェック通信を許可する。

  1. DBシステムとNLBが属するパブリック・サブネットセキュリティ・リストを編集する。
  2. イングレス・ルール(内向き) を追加する。
    • ソースCIDR: サブネット自体のCIDRブロック (例: 10.0.0.0/24
    • IPプロトコル: TCP
    • 宛先ポート範囲: 3306
    • (理由: このルールがないと、同じサブネット内であってもNLBからDBへの通信がブロックされ、ヘルスチェックが失敗します。)

5. MacのMySQLクライアントから接続

すべての設定が完了すると、NLBのヘルスチェックが「OK」(緑色)になります。

  • 接続情報:
    • ホスト: ネットワーク・ロード・バランサのパブリックIPアドレス
    • ポート: 3306
    • ユーザー: DBシステム作成時に設定したデータベースのユーザー名
    • パスワード: 上記ユーザーのパスワード
  • コマンドラインでの接続:
    mysql -h <NLBのパブリックIP> -u <DBユーザー名> -p
    

以上の手順で、無事に外部からMySQL HeatWaveに接続できるようになりました。特にヘルスチェックのプロトコルと、2段階のファイアウォール設定(特にAWSとのルールの違い)が重要なポイントでした。

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?