> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL

export const CommonDatasourceMoreInformation = ({datasource = "the data source", advancedurl = "", siteName = "CData Sync", driverVersion = ""}) => {
  return <>
      <p>
        {siteName} と{datasource} の連携について、詳しくは{' '}
        <a href={`https://cdn.cdata.com/help/${advancedurl}${driverVersion}/jp/synch/default.htm`}>
          {datasource} Connector for {siteName}
        </a> を参照してください。
      </p>
    </>;
};

export const CommonAuthSchemeAwsec2roles = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>
        EC2 インスタンスで{siteName} を実行すると、{siteName} はインスタンスに割り当てられたIAM ロールを使用して認証できます。そのロールを使用するには、<strong>Auth Scheme</strong> で<strong>AwsEC2Roles</strong> を選択します。追加のプロパティは必要ありません。
      </p>
    </>;
};

export const CommonAuthSchemeAzurepassword = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>Azure パスワードで接続するには、以下を指定します：</p>
      <ul>
        <li><strong>Auth Scheme：</strong><strong>AzurePassword</strong> を選択。</li>
        <li><strong>User：</strong>Azure への認証に使用するユーザー名を入力。</li>
        <li><strong>Password：</strong>Azure への認証に使用するパスワードを入力。</li>
        <li><strong>Azure Tenant：</strong>OAuth およびクライアントアプリケーションが作成されたAzure テナントのId を入力。このId は、いずれかのアプリケーションの<strong>概要</strong>ページの<strong>ディレクトリ (テナント) ID</strong> で確認できます。</li>
      </ul>
    </>;
};

export const CommonAuthSchemePassword = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>ユーザー資格情報で接続するには、次のプロパティを設定します：</p>
      <ul>
        <li><strong>Auth Scheme：</strong><strong>Password</strong> を選択。</li>
        <li><strong>User：</strong>{datasource} アカウントへの認証に使用するユーザー名を入力。</li>
        <li><strong>Password：</strong>{datasource} アカウントへの認証に使用するパスワードを入力。</li>
      </ul>
    </>;
};

export const CommonDatasourceAddConnector = ({datasource = "the data source", title = "the connector", destination = false, siteNameShort = "Sync"}) => {
  return <>
      <p>
        {siteNameShort} で{datasource} のデータを使用できるようにするには、まず以下の手順でコネクタを追加する必要があります：
      </p>
      <ol>
        <li>{siteNameShort} のダッシュボードから<strong>接続</strong>ページを開きます。</li>
        <li><strong>接続を追加</strong>をクリックして<strong>コネクタを選択</strong>ページを開きます。</li>
        <li>
          <strong>{destination ? "同期先" : "データソース"}</strong>タブをクリックして
          <strong>{title}</strong> 行に移動します。
        </li>
        <li>
          行末にある<strong>接続を設定</strong>アイコンをクリックして、<strong>新しい接続</strong>ページを開きます。この操作により、{' '}
          <strong>接続を追加</strong>ダイアログボックスが開きます。
          <br />
          <strong>Note：</strong> <strong>接続を設定</strong>アイコンが表示されない場合は、<strong>コネクタをダウンロード</strong>アイコンをクリックして {title} コネクタをインストールしてください。
        </li>
        <li><strong>接続を追加</strong>ダイアログボックスに接続名を入力します。</li>
        <li><strong>追加</strong>をクリックして、コネクタの<strong>設定</strong>タブを開きます。</li>
      </ol>
      <p>
        新しいコネクタのインストールについての詳細は、{' '}
        <a href="../connections">接続</a>を参照してください。
      </p>
    </>;
};

export const CommonDatasourceIntroSource = ({datasource = "the data source", siteName = "CData Sync"}) => {
  return <p>
      {siteName} アプリケーションから{datasource} コネクタを使用して、{datasource} からデータを取得してサポートされている任意の同期先に移動できます。これを行うには、コネクタを追加し、コネクタへの認証を行い、接続を完了する必要があります。
    </p>;
};

export const driverVersion = "M";

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

export const datasource = "MySQL";
export const pageTitle = "MySQL";
export const advancedurl = "DM";

<CommonDatasourceIntroSource datasource={datasource} siteName={siteName} />

## {datasource} コネクタを追加する

<CommonDatasourceAddConnector datasource={datasource} title={pageTitle} destination={false} siteNameShort={siteNameShort} />

## {datasource} への認証

コネクタを追加したら、必要なプロパティを設定します。

* **Server：** MySQL データベースをホストしているサーバーのホスト名またはIP アドレスを入力します。同じマシンからデータベースに接続するには、**Server** の値として**localhost** を入力します。
* **Port：** MySQL データベースをホストしているサーバーのポート番号を入力します。デフォルトのポート値は**3306**です。

{siteName} は、いくつかの方法で{pageTitle} への認証をサポートしています。以下から認証方法を選択し、認証の詳細を含む該当セクションに進みます。

* [**Password**](#password)（デフォルト）
* [**NTLM**](#ntlm)
* [**AzureAD**](#azure-active-directory)
* [**AzurePassword**](#azurepassword)
* [**AzureMSI**](#azure-managed-service-identity)
* [**AwsIAMRoles**](#aws-iam-roles)
* [**AwsEC2Roles**](#aws-ec2-roles)
* [**LDAP**](#ldap)

### Password

<CommonAuthSchemePassword siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### NTLM

NTLM ユーザー資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **NTLM** を選択。
* **Domain：** Microsoft Windows（NTLM）セキュリティログイン用のドメイン名を入力。
* **NTLM Version：** NTLM バージョンを選択。デフォルトバージョンは**1**です。

### Azure Active Directory

Azure Active Directory 資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **AzureAD** を選択。
* **User：** MySQL アカウントへの認証に使用するユーザー名を入力。
* **Azure Tenant：** 接続するMicrosoft Online テナントを入力。テナントを指定しない場合には、{siteName} はデフォルトのテナントを使用します。
* **OAuth Client Id：** OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントId を入力。
* **OAuth Client Secret：** OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントシークレットを入力。

### AzurePassword

<CommonAuthSchemeAzurepassword siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### Azure マネージドサービスID

Azure マネージドサービスID 資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **AzureMSI** を選択。
* **Azure Tenant：** ディレクトリ（テナント）Id を入力。このId は、Azure 上のMySQL への認証に使用するOAuth アプリケーションの**Overview** ページで入手できます。

### AWS IAM ロール

IAM ユーザー資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **AwsIAMRoles** を選択。
* **AWS Access Key：** Amazon Web Services（AWS）アカウントのアクセスキーを入力。この値は、AWS セキュリティ認証情報ページで入手できます。
* **AWS Secret：** Amazon Web Services（AWS）アカウントのシークレットを入力。この値は、AWS セキュリティ認証情報ページで入手できます。
* **AWS Role Arn：** 認証時に使用したいロールのAmazon リソースネームを入力。

### AWS EC2 Roles

<CommonAuthSchemeAwsec2roles siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### LDAP

LDAP 資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **LDAP** を選択。
* **User：** MySQL アカウントへの認証に使用するユーザー名を入力。
* **Password：** MySQL アカウントへの認証に使用するパスワードを入力。

## 接続を完了する

接続を完了するには：

1. 以下のプロパティを指定します：
   * （オプション）**Database：** MySQL Server に接続する際に接続するデフォルトのデータベースを入力。
   * （オプション）**Use SSL：** Secure Sockets Layer（SSL）プロトコルを使用するかどうかを選択。デフォルトでは、**Enable** チェックボックスはオフです。
2. **Advanced** タブで詳細な接続設定を定義します。（ただし、ほとんどの場合、これらの設定は必要ありません。）
3. **{datasource} への接続**をクリックして{pageTitle} アカウントに接続します。
4. **作成およびテスト**をクリックして接続を作成します。

## バイナリログの有効化（変更データキャプチャ用）

MySQL データベースでは、変更データキャプチャ（CDC）が自動的に有効になります。ただし、MySQL レプリケーションのバイナリログを有効にする必要があります。*バイナリログ*はトランザクションの更新を記録するため、レプリケーションツールで変更を生成できます。バイナリログを有効にするには、次の前提条件が必要です：

* MySQL サーバー
* 適切なMySQL ユーザー権限

### バイナリログの有効化

1. MySQL プロンプトから次のステートメントを送信して、バイナリログが有効になっているかどうかを確認します：

   ```
   SHOW VARIABLES LIKE 'log_bin';
   ```

   オプションが有効になっていない場合（`OFF` メッセージが表示された場合）は、MySQL サーバーのコンフィギュレーションファイルで次のオプションを設定します：

   ```
   server-id         = 223344
   log_bin           = mysql-bin
   binlog_format     = ROW
   binlog_row_image  = FULL
   expire_logs_days  = 10
   ```

   これらのオプションの説明は、[MySQL バイナリログ設定プロパティ](#mysql-バイナリログ設定プロパティ)をご覧ください。

2. このステートメントを再送信してバイナリログが有効になっていることを確認します：

   ```
   SHOW VARIABLES LIKE 'log_bin';
   ```

### MySQL バイナリログ設定プロパティ

このセクションでは、ステップ1で使用したオプションの値について説明します：

* `server-id`：この値は、MySQL クラスター内の各サーバーおよび各レプリケーションクライアントの一意のId です。
* `log_bin`：このオプションの値は、一連のbinlog ファイルのベース名です。
* `binlog_format`：このオプションのフォーマット値は、`ROW` または`row` のいずれかに設定する必要があります。
* `binlog_row_image`：このオプションの値は`FULL` または`full` に設定する必要があります。
* `expire_logs_days`：この値は、binlog ファイルが自動的に削除されるまでの日数です。デフォルト値は`0` で、自動削除が行われないことを意味します。お使いの環境のニーズに合わせて値を設定してください。

## MySQL をリバースETL データソースとして有効化

{siteNameShort} でMySQL をリバースETL データソースとして使用するには、接続するユーザーアカウントが以下のタスクを実行するための適切な権限を持っている必要があります：

* データベースとスキーマの作成
* そのスキーマ内のテーブルへのアクセス、変更、削除

これらの権限は、{siteNameShort} がリバースETL 操作中に変更のスナップショットを維持できるようにするために必要です。

MySQL で以下のSQL コマンドセットのいずれかを実行することで、必要な権限を付与できます。

### オプション1：すべてのスキーマ操作へのフルアクセス権を付与

```sql theme={null}
-- データベース作成の権限を付与。
GRANT CREATE ON *.* TO 'Username'@'Host';

-- 特定のスキーマへのフルアクセス権を付与。
GRANT ALL PRIVILEGES ON `cdata_sync_delta_snapshot`.* TO 'Username'@'Host';

-- MySQL バージョンが9.2.0より古い場合は変更を適用。
FLUSH PRIVILEGES;
```

### オプション2：必要な特定の権限のみを付与

```sql theme={null}
-- データベース作成の権限を付与。
GRANT CREATE ON *.* TO 'Username'@'Host';

-- {siteNameShort} に必要な特定の権限のみを付与。
GRANT SELECT, CREATE, INSERT, ALTER, DELETE, DROP, INDEX ON `cdata_sync_delta_snapshot`.* TO 'Username'@'Host';

-- MySQL バージョンが9.2.0より古い場合は変更を適用。
FLUSH PRIVILEGES;
```

## 詳細について

<CommonDatasourceMoreInformation datasource={datasource} advancedurl={advancedurl} siteName={siteName} driverVersion={driverVersion} />
