title: 'MySQL Data Connector' sidebar_label: 'MySQL Data Connector' description: 'MySQL Data Connector Documentation' tags:
MySQL is an open-source relational database management system that uses structured query language (SQL) for managing and manipulating databases.
The MySQL Data Connector enables federated/accelerated SQL queries on data stored in MySQL databases.
fromThe from field takes the form mysql:database_name.table_name where database_name is the fully-qualified table name in the SQL server.
If the database_name is omitted in the from field, the connector will use the database specified in the mysql_db parameter. If the mysql_db parameter is not provided, it will default to the user's default database.
These two examples are identical:
nameThe dataset name. This will be used as the table name within Spice.
Example:
The dataset name cannot be a reserved keyword (opens in a new tab) or any of the following keywords that are reserved by MySQL:
PARTITIONparamsThe MySQL data connector can be configured by providing the following params. Use the secret replacement syntax (opens in a new tab) to load the secret from a secret store, e.g. ${secrets:my_mysql_conn_string}.
| Parameter Name | Description |
|---|---|
mysql_connection_string | The connection string to use to connect to the MySQL server. This can be used instead of providing individual connection parameters. |
mysql_host | The hostname of the MySQL server. |
mysql_tcp_port | The port of the MySQL server. |
mysql_db | The name of the database to connect to. |
mysql_user | The MySQL username. |
mysql_pass | The password to connect with. |
mysql_sslmode | Optional. Specifies the SSL/TLS behavior for the connection, supported values: required: (default) Require TLS and verify the server certificate against system root CAs and domain name (equivalent to verify_identity). Set mysql_sslrootcert to verify against a specific CA bundle instead of the system trust store.preferred: Attempt a TLS connection but skip certificate and hostname verification (invalid or self-signed certificates are accepted). The connection is still encrypted and does not fall back to plaintext — if the server does not support TLS, the connection fails. Not recommended for production, as it does not protect against man-in-the-middle attacks.disabled: Do not attempt to use an SSL connection, even if the server supports it. |
mysql_sslrootcert | Optional parameter specifying the path to a custom PEM certificate that the connector will trust. |
mysql_time_zone | Optional. Specifies connection time zone. Default is +00:00 (UTC). Accepts: Fixed offsets (e.g., +02:00).IANA time zone names (e.g., America/Los_Angeles), if supported by the MySQL server.system: The MySQL server host’s OS time zone.local_system: The local runtime OS time zone. |
mysql_pool_min | The minimum number of connections to keep open in the pool, lazily created when requested. Default: 1 |
mysql_pool_max | The maximum number of connections to allow in the pool. Default: 5 |
metricsThe MySQL data connector supports the following optional component metrics (opens in a new tab):
| Metric Name | Type | Description |
|---|---|---|
connection_count | Gauge | Gauge of active connections to the database server |
connections_in_pool | Gauge | Gauge of active connections that are idling in the pool |
active_wait_requests | Gauge | Gauge of requests that are waiting for a connection to be returned to the pool |
create_failed | Counter | Counter of connections that failed to be created |
discarded_superfluous_connection | Counter | Counter of connections that were closed because there were already enough idle connections in the pool |
discarded_unestablished_connection | Counter | Counter of connections that were closed because they could not be established |
dirty_connection_return | Counter | Counter of connections that were returned to the pool but were dirty (ie. open transactions, pending queries, etc) |
discarded_expired_connection | Counter | Counter of connections that were discarded because they were expired by the pool constraints (i.e. TTL expired) |
resetting_connection | Counter | Counter of connections that were reset |
discarded_error_during_cleanup | Counter | Counter of connections that were discarded because they returned an error during cleanup |
connection_returned_to_pool | Counter | Counter of connections that were returned to the pool |
These metrics are not enabled by default, enable them by setting the metrics parameter:
The table below shows the MySQL data types supported, along with the type mapping to Apache Arrow types in Spice.
| MySQL Type | Arrow Type |
|---|---|
TINYINT | Int8 |
SMALLINT | Int16 |
INT | Int32 |
MEDIUMINT | Int32 |
BIGINT | Int64 |
DECIMAL | Decimal128 / Decimal256 |
FLOAT | Float32 |
DOUBLE | Float64 |
DATETIME | Timestamp(Microsecond, None) |
TIMESTAMP | Timestamp(Microsecond, None) |
YEAR | Int16 |
TIME | Time64(Nanosecond) |
DATE | Date32 |
CHAR | Utf8 |
BINARY | Binary |
VARCHAR | Utf8 |
VARBINARY | Binary |
TINYBLOB | Binary |
TINYTEXT | Utf8 |
BLOB | Binary |
TEXT | Utf8 |
MEDIUMBLOB | Binary |
MEDIUMTEXT | Utf8 |
LONGBLOB | LargeBinary |
LONGTEXT | LargeUtf8 |
JSON | LargeUtf8 |
SET | Utf8 |
ENUM | Dictionary(UInt16, Utf8) |
BIT | UInt64 |
:::note
TIMESTAMP value is retrieved as a UTC time value (opens in a new tab) by default. Use the mysql_time_zone configuration parameter to specify the desired time zone for interpreting TIMESTAMP values during data retrieval.:::
Spice integrates with multiple secret stores to help manage sensitive data securely. For detailed information on supported secret stores, refer to the secret stores documentation (opens in a new tab). Additionally, learn how to use referenced secrets in component parameters by visiting the using referenced secrets guide (opens in a new tab).