---
title: Databases
description: Provision managed databases on ZevCloud — PostgreSQL, MySQL, MariaDB, MongoDB, and Redis. Connect from your apps, browse the data with the built-in Database Manager, or open from your laptop.
---

Provision managed databases with one click. Use them from your apps running on ZevCloud, browse the data through the built-in Database Manager, or connect from your local machine.

## Supported engines

| Database | Versions | Default port |
|----------|----------|--------------|
| PostgreSQL | 18, 17, 16, 15 | 5432 |
| MySQL | 8 | 3306 |
| MariaDB | 11 | 3306 |
| MongoDB | 7 | 27017 |
| Redis | 7 | 6379 |

## Creating a database

1. Open your project in the [dashboard](https://console.zevcloud.net) and click **Add Service → Database**.

2. Pick the engine and version.

3. For PostgreSQL, choose an **extension** variant if you need one (see below). You can change this later.

4. Give it a name and pick a plan.

5. Click **Create**.

The database is provisioned immediately with auto-generated credentials. They appear on the service's **Overview** tab — username, password, database name, internal hostname, and a ready-to-use connection URL.

## PostgreSQL extensions

Some projects need capabilities that aren't in a stock PostgreSQL build. You can pick a variant when you create the database, or switch an existing one from **Overview → Extensions**.

| Variant | What it adds | Available on |
|---------|--------------|--------------|
| **Standard** | The built-in extension set | 18, 17, 16, 15 |
| **pgvector** | Vector similarity search — embeddings, semantic search, RAG | 18, 17, 16 |
| **PostGIS** | Geospatial types and queries — coordinates, distances, maps | 17, 16 |

Choosing a variant makes the extension *available*; you still enable it inside your database:

```sql
-- pgvector
CREATE EXTENSION vector;

-- PostGIS
CREATE EXTENSION postgis;
```

Run that once per database, from the [database manager](#terminal-access), `psql`, or a migration in your app.

### Switching on an existing database

Open the database, go to **Overview → Extensions**, and pick the variant you want.

**Your data is preserved.** The variants are the same PostgreSQL version built with extra extension libraries, so nothing is copied or migrated — the database restarts and the new extensions become available.

> **Warning: A restart is required**
>
> Switching restarts the database, which briefly drops open connections. Do it at a quiet moment, and make sure your app reconnects cleanly.

Two things to know:

- **You can't change the PostgreSQL version this way.** Moving between major versions (16 → 18) needs a dump and restore onto a new database, because the on-disk format differs between majors. See [Importing an existing database](#importing-an-existing-database).
- **Not every variant exists for every version.** The table above shows what's available; unavailable combinations are greyed out in the dashboard.

## How to use it

There are three ways to reach a database you've created. Pick the one that fits what you're doing:

| If you want to… | Use |
|-----------------|-----|
| Connect from another ZevCloud service (a web app, worker, anything in the same project) | The **internal hostname** shown on the Overview tab. No public access needed. |
| Browse tables, run SQL, import or export — from your browser | **Database Manager** (MySQL, MariaDB, PostgreSQL only — see below) |
| Connect from your laptop or an external service (pgAdmin, TablePlus, MongoDB Compass, RedisInsight, your CI, etc.) | **Public access** (see below) |

### Connect from another ZevCloud service

Use the **internal hostname** as the host. Services on the same project share an internal network and can talk to the database directly — no public exposure needed.

```bash
# Example: web app reading from a Postgres database in the same project
DATABASE_URL=postgres://user:pass@<internal-hostname>:5432/dbname
```

Add the connection string as an environment variable on your application service. Internal traffic doesn't count against any egress quota.

### Database Manager (web GUI)

For **MySQL, MariaDB, and PostgreSQL** databases, the **Database Manager** is a web GUI built into the dashboard. Click **Open database manager** on the database's Overview tab and a new browser tab opens with the GUI logged in to your database. Browse tables, edit rows, run SQL, import dumps, export backups — all without installing anything.

The Database Manager is **available on every plan** (free and paid) for standalone databases. Full walkthrough on the [Database management page](/guide/database-management).

> **Note: MongoDB and Redis: use a desktop client**
>
> Adminer (the engine behind the Database Manager) is SQL-only — it can't browse MongoDB collections or Redis keys. For those engines, use a free desktop client:
>
> - **MongoDB** → [MongoDB Compass](https://www.mongodb.com/products/tools/compass) (official, free, cross-platform)
> - **Redis** → [RedisInsight](https://redis.io/insight/) (official, free, cross-platform)
>
> Both connect using the public-access flow described below.

### Connect from your laptop or an external service

Databases default to internal-only. To reach one from outside the ZevCloud network — your laptop, a Vercel deployment, your CI runner — turn on Public Access.

1. Open the database's **Overview** tab.

2. Find the **Public Access** section.

3. Toggle it on. Public access requires a **paid plan**.

The dashboard shows a public host (something like `apps-sandbox.zevop.net`) and a unique port. Use those, plus your existing username / password / database name, in any standard client:

```bash
# PostgreSQL
psql "postgresql://user:password@apps-sandbox.zevop.net:54321/dbname"

# MySQL / MariaDB
mysql --host=apps-sandbox.zevop.net --port=54321 --user=user --password=password dbname

# MongoDB (Compass connection string)
mongodb://user:password@apps-sandbox.zevop.net:54321/dbname

# Redis (RedisInsight or redis-cli)
redis-cli -h apps-sandbox.zevop.net -p 54321 -a password
```

> **Warning: Public access exposes your database to the internet**
>
> Anyone who knows the host, port, and credentials can connect. Use strong passwords (the auto-generated ones are 32 characters — don't replace them with shorter ones), and turn public access off when you're done if you only need it occasionally. Switching the toggle off immediately closes the public port.

## Terminal access

Every database service has a **Terminal** tab that opens a shell inside the database container. Use it for CLI tooling or quick one-off commands without enabling public access:

```bash
# PostgreSQL
psql -U <username> -d <dbname>

# MySQL / MariaDB
mysql -u <username> -p <dbname>

# MongoDB
mongosh

# Redis
redis-cli
```

The terminal is admin-only and rate-limited.

## Importing an existing database

### MySQL, MariaDB, PostgreSQL — use the Database Manager

Open the Database Manager, click **Import** in the left sidebar, pick your `.sql` or `.sql.gz` file, click **Execute**. Streams up to 1 GB per file straight into the database. This is the easiest path for migrations from cPanel, another host, or a local backup.

### MongoDB — use `mongorestore` from your laptop

```bash
# 1. Turn on public access on the dashboard (paid plan)
# 2. From your laptop:
mongorestore \
  --uri="mongodb://user:password@apps-sandbox.zevop.net:54321/dbname" \
  /path/to/dump-dir
# 3. Turn public access off when the import finishes
```

### Redis — use `redis-cli` with `--pipe` or restore an RDB

```bash
# From your laptop, against a temporarily-public Redis:
cat dump.txt | redis-cli -h apps-sandbox.zevop.net -p 54321 -a password --pipe
```

For full snapshot restores (`.rdb` files), open a support ticket — we can place the file on the container's data volume directly.

## Connection limits

Every database plan includes a maximum number of simultaneous connections, shown on the plan when you create the database. When a database reaches it, new connections are refused until others close. Connections that are already open keep working.

The **Metrics** tab shows open connections against your plan's limit, and the **Overview** tab tells you when a database is close to its limit or at it. The team owner is emailed when usage stays high.

### Using fewer connections

Most apps open far more connections than they need. Before upgrading, check your pool settings:

- **Use a connection pool.** Opening a new connection per request is the most common cause of hitting the limit. Most frameworks and ORMs pool by default; make sure yours does.
- **Size the pool to the plan.** If you run several instances of an app, or several apps share one database, their pools add up. Four instances with a pool of 10 each need 40 connections.
- **Close connections in scripts and background jobs** when they finish, rather than leaving them open.
- **Serverless and short-lived processes** should keep their pool small (often 1 to 2) because each process holds its own.

If your app genuinely needs more connections at once, upgrade the database plan from its **Billing** tab. The new limit applies automatically.

### When a limit changes

When a database gets a new limit, such as after a plan change:

- **MySQL, MariaDB and Redis** apply it straight away.
- **PostgreSQL and MongoDB** need a brief restart to apply it. It's scheduled for **03:00 WAT**, at least 12 hours ahead, and the team owner is emailed the time. To get it over with sooner, click **Restart now** on the database's Overview tab.
- **If the database is using more connections than the new limit**, nothing changes for 48 hours. The team owner is emailed first, so there's time to adjust pool sizes or upgrade.

A new database gets its limit as soon as it's created.

> **Tip:**
>
> A restart usually takes under a minute and doesn't affect your data. Apps that retry failed connections reconnect on their own.

## Backups

The fastest path depends on the engine:

- **SQL databases**: open the Database Manager → **Export** → choose `gzip` + `SQL`. Browser downloads the dump. Quick, safe, no public access needed.
- **MongoDB**: enable public access, then `mongodump --uri="…" --out=./backup` from your machine.
- **Redis**: enable public access, then `redis-cli -h … --rdb dump.rdb` from your machine.

For routine off-site backups (any engine), run the export on a schedule from another ZevCloud service in the same project — internal-network access means you don't need to enable public exposure for automated backups.

## Plan + access summary

| Engine | Internal access (other ZevCloud services) | Database Manager (web GUI) | Public access (your laptop / external) |
|--------|--------------|--------------|----------------|
| PostgreSQL | Every plan | Every plan | Paid plans |
| MySQL | Every plan | Every plan | Paid plans |
| MariaDB | Every plan | Every plan | Paid plans |
| MongoDB | Every plan | Use Compass via public access | Paid plans |
| Redis | Every plan | Use RedisInsight via public access | Paid plans |

If you want a hosted browser-based GUI for MongoDB or Redis specifically, let us know at **support@zevcloud.net** — we're tracking demand for it.
