MySQL is an open-source Relational Database Management System (RDBMS) used by small and large businesses. It is one of the most popular databases in the world used for storing, organizing, and retrieving data. MySQL has customizable software, is reliable and secure, and works well with a variety of data sets.
Hevo can load data from any of your Pipelines into a MySQL database. You can set up the MySQL Destination on the fly, as part of the Pipeline creation process, or independently from the Navigation bar. The ingested data is first staged in Hevo’s S3 bucket before it is batched and loaded to the MySQL Destination.
We do not recommend using MySQL as a Destination for building your production Pipelines. It can perform poorly even for low volumes of data. If you run into performance issues, these may be unresolvable, and you will have to migrate to a different Destination. Read Limitations of using MySQL as a Destination.
Prerequisites
Whitelist Hevo’s IP Addresses
Note: You need root
access or sudo
privileges to perform some of the commands.
You need to whitelist Hevo IP address(es) for your region in the MySQL configuration file to enable Hevo to connect to your MySQL database.
To do this:
-
Navigate to the MySQL configuration directory. For example, /etc/mysql/mysql.conf.d
-
Open the MySQL server configuration file in edit mode:
#Example
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Note: The file path in the command above may vary depending on the location of your server configuration file.
-
Scroll to the [mysqld]
section, and update the bind-address
variable in one of the following ways:
-
To allow any IPv4 address to connect to your MySQL Destination, specify:
-
To allow the specific Hevo IP addresses for your region, specify:
bind-address = 10.2.7.152
Note: Replace the placeholder value in the command above with your own. For example, <Hevo_IP_address_for_your_region> with 13.235.131.126. Read Selecting your Hevo Region to know the IP address of your region.
-
Save the file, and restart the MySQL server for the changes to take effect.
Note:
-
For MySQL versions 8.0 and higher, you need to add the bind-address
variable if it does not exist in the [mysqld]
section.
-
Delete or comment out any line with the skip-networking
variable in the configuration file, as this variable does not allow the MySQL server to listen for remote connections.
Create a Database User and Grant Privileges
1. Create a database user
Perform the following steps to create a user in your MySQL database:
-
Log in to your MySQL database instance as a root
user, using an SQL client tool.
-
Enter the following command:
CREATE USER '<user_name>'@'%' IDENTIFIED BY '<strong password>';
Note: Replace the placeholder values in the command above with your own.
2. Grant privileges to the user
The following table lists the privileges that Hevo requires to connect to and load data into your MySQL Destination:
Privilege Name |
Allows Hevo to |
ALTER |
Edit database tables. |
CREATE |
Create databases and tables. |
CREATE TEMPORARY TABLES |
Create temporary tables. |
DELETE |
Delete rows from database tables. |
DROP |
Delete databases and tables. |
INSERT |
Insert rows into database tables. |
SELECT |
Select rows from database tables. |
UPDATE |
Update rows in database tables. |
Perform the following steps to grant the privileges:
-
Log in to your MySQL server as a root user. For example, mysql -u root -p
.
-
Enter the following command to grant privileges to the database user:
GRANT ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, INSERT, SELECT, UPDATE ON <database_name>.* to <user_name>@<IP address>;
Note: Replace the placeholder values in the command above with your own. For example, <user_name> with jerome.
-
(Optional) View the grants for the user with the following command:
show grants for <user_name>@<IP address>;
Note: Replace the placeholder values in the command above with your own. For example, <user_name> with jerome.
Perform the following steps to configure MySQL as a Destination in Hevo:
-
Click DESTINATIONS in the Navigation Bar.
-
Click + CREATE DESTINATION in the Destinations List View.
-
On the Add Destination page, select MySQL.
-
On the Configure your MySQL Destination page, specify the following:
-
Destination Name: A unique name for your Destination, not exceeding 255 characters.
-
Database Host: The MySQL host’s IP address or DNS. Alternatively, you can connect to a local database. Read Connecting to a Local Database for the steps to do this.
-
Database Port: The port on which your MySQL server listens for connections. Default value: 3306
-
Database User: The database user that you created. This is a user with a non-administrative role in the MySQL database.
-
Database Password: The password of the database user.
-
Database Name: The name of the Destination database where data is to be loaded.
-
Additional Settings:
-
Connect through SSH: Enable this option to connect to Hevo using an SSH tunnel, instead of directly connecting your MySQL database host to Hevo. This provides an additional level of security to your database by not exposing your MySQL setup to the public. Read Connecting Through SSH.
If this option is disabled, you must whitelist Hevo’s IP addresses to allow Hevo to connect to your MySQL host.
-
Use SSL: Enable this option to use an SSL-encrypted connection. To enable this, specify the following:
-
CA File: The file containing the SSL server certificate authority (CA).
-
Load all CA Certificates: If selected, Hevo loads all CA certificates (up to 50) from the uploaded CA file, else it loads only the first certificate.
Note: Select this check box if you have more than one certificate in your CA file.
-
Client Certificate: The client public key certificate file.
-
Client Key: The client private key file.
Read MySQL for the steps to create the required files and keys.
-
Sanitize Table/Column Names: Enable this option to remove all non-alphanumeric characters and spaces in a table or column name, and replace them with an underscore (_). Read Name Sanitization.
-
Click TEST CONNECTION. This button is enabled once all the mandatory fields are specified.
-
Click SAVE & CONTINUE. This button is enabled once all the mandatory fields are specified.
Read the detailed Hevo documentation for the following related topics:
Destination Considerations
-
You must disable any foreign keys defined in the target tables. These keys do not allow data to be loaded until the reference table has a corresponding key defined.
-
You can replicate data for only 4090 columns in a given MySQL table. Read Limits on the Number of Columns.
Revision History
Refer to the following table for the list of key updates made to this page:
Date |
Release |
Description of Change |
Aug-12-2024 |
NA |
Updated section, Grant privileges to the user to update the command. |
Mar-18-2024 |
2.21.2 |
Updated section, Configure MySQL Connection Settings to add information about the Load all CA certificates option. |
Oct-03-2023 |
NA |
Updated section, Create a Database User and Grant Privileges to add steps to Create a database user. |
Apr-25-2023 |
2.12 |
Updated section, Configure MySQL Connection Settings to add information that you must specify all fields to create a Pipeline. |
Jan-10-2023 |
NA |
- Removed section, Limitations and relocated its content to the Limitations of using MySQL as a Destination page. |
Dec-07-2022 |
NA |
Updated section, Limitations to provide information about MySQL as a Destination. |
Sep-07-2022 |
NA |
Added the following sections: - Prerequisites, - Whitelist Hevo’s IP Addresses, - Grant Permissions to the Database User. - Updated the Configure MySQL Connection Settings to add a link to the Connecting to a Local Database page. - Deleted the Connect to a Local Database section. |
Feb-21-2022 |
1.82 |
Updated section, Configure MySQL Connection Settings to provide support for SSL in MySQL as a Destination. |
Jul-26-2021 |
1.68 |
Added section, Connect to a Local Database. |
Jul-12-2021 |
NA |
Updated the section, Destination Considerations. |