MySQL
Connect & Ingest data from / to a MySQL database
Setup
The following credentials keys are accepted:
host(required) -> The hostname / ip of the instanceuser(required) -> The username to access the instancedatabase(required) -> The database name of the instanceschema(optional) -> The default schema to usepassword(optional) -> The password to access the instance. If you're having issues with a special character in the password, try using the url by encoding the special character.port(optional) -> The port of the instance. Default is3306.ssh_tunnel(optional) -> The URL of the SSH server you would like to use as a tunnel (examplessh://user:[email protected]:22)ssh_private_key(optional) -> The private key to use to access a SSH server (raw string or path to file).ssh_passphrase(optional) -> The passphrase to use to access a SSH server.innodb_lock_wait_timeout-> The timeout in seconds for InnoDB row lock waits (integer, default:50). Increase this value if you encounterLock wait timeout exceedederrors during upsert/merge operations with concurrent writes.
Google Cloud SQL IAM Authentication (v1.4.25+)
For Google Cloud SQL MySQL instances with IAM authentication enabled, you can use the following properties:
gcp_instance(required) -> The Cloud SQL instance namegcp_project(required) -> The GCP project IDgcp_region(required) -> The GCP region (e.g.,us-central1)user(required) -> The IAM user or service account name (short format, e.g.,my-sa)gcp_key_file(optional) -> Path to the GCP service account credentials JSON filegcp_key_body(optional) -> The GCP service account credentials JSON content as a stringgcp_use_iam_auth(required) -> Must be set totrueto enable IAM authenticationgcp_lazy_refresh(optional) -> Enable lazy refresh for serverless environments (trueorfalse). Default isfalse.gcp_use_private_ip(optional) -> Use private IP for the connection (trueorfalse). Default isfalse.
Authentication Methods (in priority order):
If
gcp_key_bodyis provided, uses the JSON credentials directlyIf
gcp_key_fileis provided, uses the credentials fileOtherwise, uses Application Default Credentials (ADC)
Important Notes:
When using IAM authentication, do NOT provide a
password- authentication is handled via IAM tokensThe
userfield should be the short format (e.g.,my-sa, not[email protected])MySQL has a 32-character username limit
The service account must have the
Cloud SQL Clientrole
Additional Parameters. See here for more details:
allow_all_files-> Allows using LOCAL DATA INFILE without restrictions (trueorfalse)allow_cleartext_passwords-> Permits sending passwords in clear text (trueorfalse)allow_fallback_to_plaintext-> Allows fallback to unencrypted connection if server doesn't support TLS (trueorfalse)allow_native_passwords-> Enables the native password authentication method (trueorfalse)allow_old_passwords-> Allows the old insecure password method (trueorfalse)charset-> Sets the charset for server-side prepared statements (e.g.,utf8mb4)check_conn_liveness-> Checks connection liveness before using it (trueorfalse)collation-> Sets the collation for server-side prepared statements (e.g.,utf8mb4_general_ci)client_found_rows-> Returns number of matching rows instead of rows changed (trueorfalse)columns_with_alias-> Prepares result columns as if they have an alias (trueorfalse)interpolate_params-> Interpolates placeholders instead of using prepared statements (trueorfalse)loc-> Sets the location for time.Time values (e.g.,Local,UTC, or a time zone name)time_truncate-> Truncates time values to the given precision (trueorfalse)max_allowed_packet-> Max packet size allowed (integer value in bytes)multi_statements-> Allows multiple statements in one query (trueorfalse)parse_time-> Converts TIME/DATE/DATETIME to time.Time (trueorfalse)read_timeout-> I/O read timeout (duration string, e.g.,30s,0.5m,1h)reject_read_only-> Rejects read-only connections (trueorfalse)server_pub_key-> Server public key name (string)timeout-> Timeout for establishing connections (duration string, e.g.,30s,0.5m,1h)write_timeout-> I/O write timeout (duration string, e.g.,30s,0.5m,1h)connection_attributes-> Connection attributes to send to MySQL (comma-separated list of key-value pairs)tls-> TLS configuration name (true,false,skip-verify, orcustomwhen providingcert_*keys below)
Custom TLS Certificates:
cert_file(optional) -> the client certificate to use to access the instance via TLS (file path or raw)cert_key_file(optional) -> the client key to use to access the instance via TLS (file path or raw)cert_ca_file(optional) -> the client CA certificate to use to access the instance via TLS (file path or raw)
Using sling conns
sling connsHere are examples of setting a connection named MYSQL. We must provide the type=mysql property:
Environment Variable
Sling Env File YAML
See here to learn more about the sling env.yaml file.
Database user creation
To allow Sling to access your database, we need to create a user with the proper privileges. Please follow the steps below:
First you'll need to login as a user with
CREATE USERandGRANT OPTIONprivileges. Create a usersling(or whatever you prefer) by running :If you are planning to load data into this connection, you need to grant the following privileges to that user so we can create tables in schema sling:
If you are planning to extract data from this connection, you need to give permission to read the tables you'd like Sling to extract.
If you are facing issues connecting, please reach out to us at [email protected], on discord or open a Github Issue here.
Last updated
Was this helpful?