Skip to content

shogo82148/actions-setup-mysql

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

actions-setup-mysql

This action sets up a MySQL database for use in actions by:

  • download a version of MySQL or MariaDB
  • start mysqld

Motivation

Usage

steps:
  - uses: actions/checkout@v4
  - uses: shogo82148/actions-setup-mysql@v1
    with:
      mysql-version: "8.0"
  - run: mysql -uroot -e 'SELECT version()'

Configuration

mysql-version

The version of MySQL or MariaDB.

Available Versions are:

  • MySQL
    • 8.4
    • 8.3
    • 8.2
    • 8.1
    • 8.0
    • 5.7
    • 5.6
  • MariaDB
    • 11.4
    • 11.3
    • 11.2
    • 11.1
    • 11.0
    • 10.11
    • 10.10
    • 10.9
    • 10.8
    • 10.7
    • 10.6
    • 10.5
    • 10.4
    • 10.3
    • 10.2

distribution

The distribution. The valid values are mysql or mariadb. The default value is mysql.

You can use mysql- and mariadb- prefixes in mysql-version instead of the distribution input. For example, the following two workflows install MariaDB 10.6.

- uses: shogo82148/actions-setup-mysql@v1
  with:
    distribution: "mariadb"
    mysql-version: "10.6"
- uses: shogo82148/actions-setup-mysql@v1
  with:
    mysql-version: "mariadb-10.6"

auto-start

If it is true, the action starts the MySQL server. If it is false, the action doesn't start the MySQL sever. You need to execute the mysqld command yourself.

The default value is true.

my-cnf

my.cnf settings for mysqld. It uses the same syntax as my.cnf.

Example:

- uses: shogo82148/actions-setup-mysql@v1
  with:
    mysql-version: "8.0"
    my-cnf: |
      innodb_log_file_size=256MB
      innodb_buffer_pool_size=512MB
      max_allowed_packet=16MB
      max_connections=50
      local_infile=1

root-password

The password for the root user.

user

The name of the new user.

password

The password for the new user.

Outputs

base-dir

The directory under which the mysql database is being created.

It contains:

  • etc/my.cnf
  • tmp/mysqld.log
  • tmp/mysqld.pid
  • tmp/mysql.sock
  • var: The default path of datadir
  • var/ca.pem: The root certificate of the certification authority for SSL/TLS
  • var/server-cert.pem: The server certificate for SSL/TLS
  • var/server-key.pem: The server key for SSL/TLS

Here are some examples:

- id: setup-mysql
  uses: shogo82148/actions-setup-mysql@v1
  with:
    mysql-version: "8.0"

- name: connect via unix domain socket
  run: mysql -uroot \
    --protocol=SOCKET \
    --socket=${{ steps.setup-mysql.outputs.base-dir }}/tmp/mysql.sock
    -e 'SELECT version()'

- name: configure the root certificate for connecting via SSL/TLS.
  run: mysql -uroot \
    --ssl --ssl-mode=--ssl-mode=REQUIRED \
    --ssl-ca=${{ steps.setup-mysql.outputs.base-dir }}/var/ca.pem \
    -e 'SELECT version()'

Environment Values

MYSQL_HOME

The path to the directory in which the server-specific my.cnf file resides.