Using Liquibase with MySQL

MySQL is a fast, multi-user SQL database service. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software.

Note: For more information, see the MySQL documentation page.

Supported Versions

  • 5.5 – community tested
  • 5.6 – community and Test Harness tested
  • 5.7 – officially certified (V4.2+) and tested with Test Harness
  • 8.0 – officially certified (V4.2+) and tested with Test Harness

Prerequisites

Before using Liquibase with your database, ensure you have:

Driver Information

To use Liquibase and MySQL, you need to have the JDBC file:

  1. Ensure you have downloaded the MySQL JDBC Driver to connect to MySQL.
  2. Place the mysql-connector-java-version.jar file in the liquibase/lib directory.

Note: If you put the mysql-connector-java-version.jar file in any other directory, specify the path to it in the liquibase.properties file: classpath:../path_to_drivers/mysql-connector-java-version.jar. For more information, see Specifying Properties in a Connection Profile.

If you use Maven, you also need to download the MySQL driver jar file and put the driver in a location that your Maven build can access. Configure the Maven pom.xml file to use the local copy of the driver jar file. For example:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.21</version>
</dependency>

Testing Your Connection

For Liquibase and MySQL to work, you need to:

  1. Ensure your MySQL is configured:
  1. Specify the database URL in your liquibase.properties file or as a parameter to the command in the CLI. See the following:
  1. Create a text file called changelog (.xml, .sql, .json, or .yaml) in your project directory and add a changeset.

  1. Navigate to your project folder in the CLI and run the Liquibase status command to see whether the connection is successful. You can pass arguments in the CLI or keep them in the Liquibase properties file.
  2. liquibase --username=test --password=test --changelog-file=<changelog.xml> status
  3. Run your first update with the update command, which makes changes to your database. You can also run the update-sql command to inspect the SQL before running the update command.
  4. liquibase --changelog-file=<changelog.xml> update-sql
    liquibase --changelog-file=<changelog.xml> update

From a database UI tool, ensure that your database contains the table you added along with the DATABASECHANGELOG table and DATABASECHANGELOGLOCK table.

MySQL Server

  • Ensure your MySQL is configured. You can check the status by running:
    • The sudo service mysql status command for Linux.
    • The net start MySQL or services.msc command for Windows. The services.msc command will open a new window and display the list of services available on your system. Find MySQL and check the status column. You can also run mysql -u root -p to see if MySQL works.
  • Specify the database URL in your liquibase.properties file:
  • url: jdbc:mysql://<servername>:<port>/<dbname>

    Tip: To apply a Liquibase Pro key to your project, add the following property to the Liquibase properties file: liquibaseProLicenseKey: <paste code here>

MySQL on AWS RDS

  • Check the connection by using the mysql command-line client and running the following:

  • mysql -h <endpoint> -P 3306 -u <mymasteruser> -p

    Note: The alternative way is to connect with the SSL certificate.

    You can find the connection information in the AWS Management Console:

    1. Open the Amazon RDS console
    2. Select Databases and choose the needed database
    3. Select Connectivity & security. You will see all information under Endpoint & Port.

    To find the connection information using the AWS CLI and RDS API, refer to the Connecting to a DB instance running the MySQL database engine documentation.

  • Specify the database URL in the liquibase.properties file as follows:

  • url: jdbc:mysql://<endpoint>:<port>/<dbname>

    Example: url:jdbc:mysql://mydb.123456789012.us-east-1.rds.amazonaws.com:3306/myTestDB?autoReconnect=true&useSSL=false

Related Links