Interfaces and endpoints

Charmed MySQL K8s supports modern mysql_client and legacy mysql interfaces (in a backward compatible mode).

Caution

Do NOT integrate (relate) both modern and legacy interfaces simultaneously.

Modern interfaces

This charm provides modern mysql_client interface. Applications can easily connect MySQL using data_interfaces library from data-platform-libs.

Modern mysql_client interface (database endpoint)

Adding a Juju relation is accomplished with juju integrate via endpoint database.

Example:

# Deploy Charmed MySQL cluster with 3 nodes
juju deploy mysql-k8s -n 3 --trust --channel 8.0

# Deploy the relevant charms, e.g. mysql-test-app
juju deploy mysql-test-app

# Relate MySQL with your application
juju relate mysql-k8s:database mysql-test-app:database

# Check established relation (using mysql_client interface):
juju status --relations

# Example of the properly established relation:
# > Relation provider      Requirer                 Interface     Type
# > mysql-k8s:database     mysql-test-app:database  mysql_client  regular

See details about database user roles in Users.

Note

In order to integrate with this charm, every table created by the integrated application must have a primary key. This is required by the group replication plugin enabled in this charm.

Legacy relations

Legacy relations are deprecated and will be discontinued in future releases. Usage should be avoided.

Check the legacy interface implementation limitations in Legacy charm.

Legacy mysql interface (mysql and mysql-root endpoints)

This charm supports legacy interface mysql (endpoint mysql and mysql-root). This was a popular interface used by some legacy charms (e.g. MariaDB, OSM MariaDB, Percona Cluster and MySQL Innodb Cluster), often in cross-model relations:

juju deploy mysql-k8s --trust --channel 8.0
juju config mysql-k8s mysql-interface-database=wordpress mysql-interface-user=wordpress
juju deploy wordpress-k8s
juju relate mysql-k8s:mysql wordpress-k8s:db

Caution

The endpoint mysql-root provides the same legacy interface mysql with MySQL root-level privileges. It is NOT recommended to use it from security point of view.