> ## 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

You can use the MySQL connector from the CData Sync application to capture data
from MySQL and move it to any supported destination. To do so, you need to add
the connector, authenticate to the connector, and complete your connection.

## Add the MySQL Connector

To enable Sync to use data from MySQL, you first must add the
connector, as follows:

<ol>
  <li>Open the **Connections** page of the Sync dashboard.</li>
  <li>Click **Add Connection** to open the **Select Connectors** page.</li>
  <li>Click the **Sources** tab and locate
  the **MySQL** row.</li>

  <li>
    Click the **Configure Connection** icon at the end of that row to open
    the **New Connection** page. This action opens the
    **Add Connection** dialog.

    **Note:** If the **Configure Connection** icon is not
    available, click the **Download Connector** icon to install
    the MySQL connector.
  </li>

  <li>Enter a name for your connection in the **Add Connection** dialog.</li>
  <li>Click **Add** to open the **Settings** tab for your connector.</li>
</ol>

For more information about installing new connectors, see
[Connections](https://docs.sync.cdata.com/26.4/en/connections/connections.md).

## Authenticate to MySQL

After you add the connector, you need to set the required properties.

* **Server:** Enter the host name or IP address of the server that hosts the MySQL database. To connect to the database from the same machine, enter **localhost** as the value for **Server.**
* **Port:** Enter the port number of the server that hosts the MySQL database. The default port value is **3306**.

CData Sync supports authenticating to MySQL in several ways. Select your authentication method below to proceed to the relevant section that contains the authentication details.

* [**Password**](#password) (default)
* [**NTLM**](#ntlm)
* [**AzureAD**](#azure-active-directory)
* [**AzurePassword**](#azurepassword)
* [**AzureMSI**](#azure-managed-service-identity)
* [**AwsIAMRoles**](#aws-iam-roles)
* [**AwsEC2Roles**](#aws-ec2-roles)
* [**LDAP**](#ldap)

### Password

To connect with your user credentials, set the following properties:

<ul><li>**Auth Scheme:** Select **Password**.</li>
<li>**User:** Enter the username that you use to authenticate to your MySQL account.</li>
<li>**Password:** Enter the password that you use to authenticate to your MySQL account.</li></ul>

### NTLM

To connect with your NTLM user credentials, specify the following properties:

* **Auth Scheme:** Select **NTLM**.
* **Domain:** Enter the domain name for a Microsoft Windows (NTLM) security login.
* **NTLM Version:** Select your NTLM version. The default version is **1**.

### Azure Active Directory

To connect with your Azure Active Directory credentials, specify the following properties:

* **Auth Scheme:** Select **AzureAD**.
* **User:** Enter the username that you use to authenticate to your MySQL account.
* **Azure Tenant:** Enter the Microsoft Online tenant to which you want to connect. If you do not specify a tenant, CData Sync uses the default tenant.
* **OAuth Client Id:** Enter the client Id that you were assigned when you registered your application with an OAuth authorization server.
* **OAuth Client Secret:** Enter the client secret that you were assigned when you registered your application with an OAuth authorization server.

### AzurePassword

To connect with an Azure password, specify these settings:

<ul><li>**Auth Scheme:** Select **AzurePassword**.</li>
<li>**User:** Enter the username that you use to authenticate to Azure.</li>
<li>**Password:** Enter the password that you use to authenticate to Azure.</li>
<li>**Azure Tenant:** Enter the Id of the Azure Tenant under which your OAuth and client applications were created. This Id is available under **Directory (tenant) ID** on the **Overview** page of one of the applications.</li></ul>

### Azure Managed Service Identity

To connect with your Azure Managed Service Identity credentials, specify the following properties:

* **Auth Scheme:** Select **AzureMSI**.
* **Azure Tenant:** Enter the directory (tenant) Id. This Id is available on the **Overview** page of the OAuth application that you use to authenticate to MySQL on Azure.

### AWS IAM Roles

To connect with your IAM user credentials, specify the following properties:

* **Auth Scheme:** Select **AwsIAMRoles**.
* **AWS Access Key:** Enter your Amazon Web Services (AWS) account access key. This value is available on you AWS security-credentials page.
* **AWS Secret:** Enter your Amazon Web Services (AWS) account secret. This value is available on you AWS security-credentials page.
* **AWS Role Arn:** Enter the Amazon Resource Name of the role that you want to use when you authenticate.

### AWS EC2 Roles

When you run CData Sync on an EC2 instance, CData Sync can authenticate by using the IAM role that is assigned to the instance. Select **AwsEC2Roles** for **Auth Scheme** to use that role. No additional properties are required.

### LDAP

To connect with LDAP credentials, specify the following properties:

* **Auth Scheme:** Select **LDAP**.
* **User:** Enter the username that you use to authenticate to your MySQL account.
* **Password:** Enter the password that you use to authenticate to your MySQL account.

## Complete Your Connection

To complete your connection:

1. Specify these properties:
   * (Optional) **Database:** Enter the default database to which you want to connect when you connect to the MySQL server.
   * (Optional) **Use SSL:** Select whether you want to enable Secure Sockets Layer (SSL). By default, the **Enable** checkbox is not selected.
2. Define advanced connection settings on the **Advanced** tab. (In most cases, though, you should not need these settings.)
3. Click **Connect to MySQL** to connect to your MySQL account.
4. Click **Create & Test** to create your connection.

## Enable Binary Logging (for Change Data Capture)

Change data capture (CDC) is enabled automatically for the MySQL database. However, you must enable binary logging for MySQL replication. *Binary logs* record transaction updates so replication tools can generate changes. You need the following prerequisites in order to enable binary logging:

* a MySQL server
* the appropriate MySQL user privileges

### Enable Binary Logging

1. Determine whether binary logging is enabled by submitting the following statement from a MySQL prompt:

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

   If the option is not enabled (that is, your receive an `OFF` message), configure the following options in the MySQL Server configuration file:

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

   Descriptions of these options are available in [MySQL binlog Configuration Properties](#mysql-binary-logging-configuration-properties).

2. Verify that binary logging is enabled by resubmitting this statement:

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

### MySQL Binary-Logging Configuration Properties

This section describes the values for options that are used earlier in step 1:

* `server-id`: This value is a unique Id for each server and each replication client in the MySQL cluster.
* `log_bin`: The value for this option is the base name of the sequence of binlog files.
* `binlog_format`: The format value for this option is must be set either to `ROW` or `row`.
* `binlog_row_image`: The value for this option must be set to `FULL` or `full`.
* `expire_logs_days`: This value is the number of days before the binlog file is removed automatically. The default value is `0`, which means that there is no automatic removal. Set the value to match the needs of your environment.

## Enable MySQL as a Reverse ETL Source

To use MySQL as a reverse ETL source in Sync, the connected user account must have appropriate permissions to perform the following tasks:

* create a database and schema
* access, modify, or delete tables within that schema

These privileges are required so that Sync can maintain a snapshot of changes during reverse ETL operations.

You can grant the necessary permissions by executing one of the following sets of SQL commands in MySQL.

### Option 1: Grant Full Access to All Schema Operations

```sql theme={null}
-- Grant permission to create databases.
GRANT CREATE ON *.* TO 'Username'@'Host';

-- Grant full access to the specific schema.
GRANT ALL PRIVILEGES ON `cdata_sync_delta_snapshot`.* TO 'Username'@'Host';

-- Apply changes if the MySQL version is earlier than 9.2.0.
FLUSH PRIVILEGES;
```

### Option 2: Grant Only the Specific, Required Privileges

```sql theme={null}
-- Grant permission to create databases.
GRANT CREATE ON *.* TO 'Username'@'Host';

-- Grant only the specific privileges that are required by {siteNameShort}.
GRANT SELECT, CREATE, INSERT, ALTER, DELETE, DROP, INDEX ON `cdata_sync_delta_snapshot`.* TO 'Username'@'Host';

-- Apply changes if the MySQL version is earlier than 9.2.0.
FLUSH PRIVILEGES;
```

## More Information

For more information about interactions between CData Sync and MySQL, see
[MySQL Connector for CData Sync](https://cdn.cdata.com/help/DMN/synch/default.htm).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.