> ## Documentation Index
> Fetch the complete documentation index at: https://artie.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL

> Learn how to configure MySQL as a destination in Artie, including host and port settings, service account creation, destination database routing, and the required permissions for real-time replication.

## Required settings

* Host name
* Port (default is `3306`)
* Service account

### Creating a service account

```sql theme={null}
CREATE USER 'artie' IDENTIFIED BY 'password';

-- Allows Artie to merge data, create and alter destination tables, and clean up
-- its temporary tables.
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON *.* TO 'artie';
```

## Destination database routing

In MySQL, schemas and databases are the same thing. The **Schema options** setting controls which destination database Artie uses for each replicated table.

### Write to one schema

Enter the destination database name in **Schema options**. Artie writes every selected source table to that database, regardless of its source database.

You can select an existing destination database or create a new one from the Dashboard. When you create a database from the Dashboard, Artie issues `CREATE DATABASE` using the destination service account. The global grant above includes the required `CREATE` privilege.

For an existing database, the service account needs `SELECT`, `INSERT`, `UPDATE`, `DELETE`, `CREATE`, `DROP`, and `ALTER` on that database. If you prefer a database-scoped grant for an existing database, use:

```sql theme={null}
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER
ON artie_replica.* TO 'artie';
```

Creating a database from the Dashboard requires the `CREATE` privilege at the global level, for example:

```sql theme={null}
GRANT CREATE ON *.* TO 'artie';
```

### Write to multiple schemas

Select **Write to multiple schemas** to preserve each source database as a separate destination database. Artie writes a table from each source database to the corresponding destination database, optionally prefixed with the configured schema prefix.

For example, a source table in `orders.events` can be written to `orders.events`, or to `replica_orders.events` when the prefix is `replica_`.

Create every destination database before starting the pipeline. Artie creates and evolves tables within those databases, but it does not currently create destination databases itself. The service account needs the same table-management permissions on every destination database:

```sql theme={null}
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER
ON orders.* TO 'artie';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER
ON replica_orders.* TO 'artie';
```

If the set of source databases is dynamic and you want Artie to create destination databases in the future, the existing global `CREATE ON *.*` grant has the necessary authority. This is not currently used by Artie; destination databases must still be provisioned before the pipeline starts.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.