---
layout: article
title: MySQL
description: Run a native MySQL database provisioned for your project and connect to it directly with standard MySQL clients.
---

Appwrite native MySQL databases give you a managed MySQL instance provisioned for your project. You pick the compute specification, and Appwrite provisions the engine in your project's region with its own storage, networking, and credentials, exposed through a per-database public hostname secured with TLS.

A native MySQL database gives you the raw engine: you connect with the `mysql` client or any MySQL driver, bring your own ORM and migrations, and use the full feature set of MySQL, with no Appwrite layer in between. If you want Appwrite SDKs, platform permissions, and serverless scaling for app data, use [TablesDB](/docs/products/databases/tablesdb) for relational data, [DocumentsDB](/docs/products/databases/documentsdb) for schemaless documents, or [VectorsDB](/docs/products/databases/vectorsdb) for embeddings instead.

# Supported versions

Appwrite manages the database container, storage, backups, and networking. You bring the application.

New databases run MySQL 8.4 by default, and you can select MySQL 8.0 on create instead. The database listens on the standard MySQL port, 3306.

The version is selected on create and can be upgraded later. Upgrades run online by provisioning a second instance on the new version, streaming data over with logical replication, and moving traffic once replication is caught up.

A new database starts in a `provisioning` state and becomes `ready` within a few minutes. Large specifications or high-availability configurations take longer to schedule; poll the database status or check the databases list until it reports `ready`.

# Regions

A native database lives in the same region as the project that owns it. There is no per-database region selector. Each database gets a unique hostname in the form `db-<hash>.<region>.appwrite.center`, and data does not leave the region.

# Feature overview

- [Connections](/docs/products/databases/mysql/connections): Connect with the `mysql` client or any driver. Credentials are rotatable through the API.
- [Connection pooling](/docs/products/databases/mysql/connection-pooling): Per-database connection pooler with automatic read/write split when high availability is enabled.
- [Backups](/docs/products/databases/mysql/backups): Scheduled backups, manual backups, restores, and point-in-time recovery.
- [Branches](/docs/products/databases/mysql/branches): Spin up an ephemeral copy of your database in seconds from a storage snapshot.
- [High availability](/docs/products/databases/mysql/high-availability): Up to five synchronous, semi-synchronous, or asynchronous replicas with automatic failover.
- [Scaling](/docs/products/databases/mysql/scaling): Resize compute online and grow storage automatically as your data grows.
- [Network security](/docs/products/databases/mysql/network-security): TLS by default, optional IP allowlists, and a dedicated hostname per database.
- [Monitoring](/docs/products/databases/mysql/monitoring): Poll live health, connection, replica, and storage information from your pipelines and monitoring.
- [Maintenance](/docs/products/databases/mysql/maintenance): Maintenance windows, online version upgrades, and pause and resume.

# Specifications and pricing

Each database runs against one of the following compute specifications, billed monthly:

| Tier | Specification | CPU | Memory | Storage | Bandwidth | Connections | Price |
|-----------------|----------------|---------|--------|---------|-----------|-------------|---------|
| Starter | `s-1vcpu-1gb` | 1 core | 1 GB | 10 GB | 50 GB | 100 | $10/mo |
| Standard | `s-2vcpu-2gb` | 2 cores | 2 GB | 25 GB | 200 GB | 200 | $20/mo |
| Standard Plus | `s-2vcpu-4gb` | 2 cores | 4 GB | 50 GB | 400 GB | 500 | $49/mo |
| Professional | `s-4vcpu-8gb` | 4 cores | 8 GB | 200 GB | 1 TB | 1,000 | $85/mo |
| Business | `s-4vcpu-16gb` | 4 cores | 16 GB | 500 GB | 2 TB | 2,000 | $160/mo |
| Business Plus | `s-4vcpu-32gb` | 4 cores | 32 GB | 1 TB | 5 TB | 4,000 | $299/mo |
| Enterprise | `s-8vcpu-32gb` | 8 cores | 32 GB | 2 TB | 7.5 TB | 5,000 | $425/mo |
| Enterprise Plus | `s-8vcpu-64gb` | 8 cores | 64 GB | 3 TB | 10 TB | 10,000 | $699/mo |

The Storage and Bandwidth columns are the monthly allowances included with each tier. Usage beyond them is billed as overage, and optional features are billed as add-ons on top of the tier price:

| Add-on | Price |
|----------------------------|---------------------------------|
| Storage overage | $0.125 per GB per month |
| Bandwidth overage | $0.08 per GB per month |
| High availability replica | 50% of the tier price, per replica |
| Point-in-time recovery | 20% of the tier price |

You can [resize between tiers](/docs/products/databases/mysql/scaling) as your workload changes.

# Limits

The following limits apply per database:

| Limit | Value |
|--------------------------------|-----------------------------------------------------------|
| Databases per project | 10 |
| High availability replicas | 0 - 5 |
| IP allowlist entries | 100 |
| Backup retention | 1 - 365 days |
| Point-in-time recovery window | 1 - 35 days |
| Max simultaneous connections | 10,000 platform cap, lower on smaller specifications |

# Billing and plan requirements

Native databases are available on paid plans, and a payment method must be attached to your organization. Each database is billed by the hour against its [compute specification](#specifications), with separate line items for overages and add-ons. See [pricing](/pricing) for details.
