Create a managed database instance
Provisioning a managed database is a one-form job. You pick an engine and version, a flavor, a network, a name, and a first user. A couple of minutes later you have a private endpoint your apps can talk to.
This page walks the wizard end to end and calls out the choices that are hard to change later.
Before you start
Have these ready — the wizard is short but it doesn't let you jump back to fix a bad choice cleanly.
| You need | Why |
|---|---|
| The engine and version | MySQL 8.0/8.4, MariaDB 11.4, PostgreSQL 16/17/18. Locked once the instance is created — a version change means restoring a backup into a new instance. See Overview. |
| A flavor | m1.small, m1.medium, or m1.large. See Overview → Flavor guide. |
| A private network + subnet | The instance will get its address here. Put it on the same private network as the app VMs that will talk to it, so traffic never leaves the private plane. |
| A first database name and user | You'll create the first application user during the wizard. Extra users and databases can be added later from the instance detail page. |
| A strong password | Written down somewhere safe. The console will not let you retrieve it later — you'll have to reset it. |
Open the wizard
From the left navigation of console.thewahda.com, go to Databases → Instances. The list page shows every managed database in the current project.
Click Create Database Instance in the top-left.
Step 1 — Details
| Field | What to enter |
|---|---|
| Availability Zone | Leave the default (in-north-az1). Pick a specific AZ only for a multi-AZ layout. |
| Database Instance Name | Recognizable label — app-prod-mysql, analytics-pg-17. Letters, digits, -, _, .. Keep it stable; it appears in dashboards, alerts, and log lines. |
| Instance Type | Standalone for a fresh primary. Switch to Replica when you're adding a read-only copy of an existing instance — see Read replicas. |
| Database Disk (GiB) | The dedicated persistent storage for the database files. Include headroom for a full backup restore plus write growth (see the tip below). You can grow the disk later; you can't shrink it. |
| Datastore Type | mysql, mariadb, or postgresql. Locked after creation. |
| Datastore Version | The supported versions for the datastore you picked. 8.0 or 8.4 for MySQL; 11.4 for MariaDB; 16, 17, or 18 for PostgreSQL. Also locked. |
| Database Flavor | m1.small / m1.medium / m1.large. Filter with the tabs (All Flavors, X86 Architecture, Heterogeneous Computing, Custom). You can resize later; you can't shrink below what the data uses. |
:::tip Sizing storage Include enough headroom for a full-size backup restore plus a few days of write growth. If your working set is 30 GB and grows at 1 GB/day, 40 GB will be tight in a month — pick 80. Growing later is cheap; running out at 2am isn't. :::
Step 2 — Networking
:::note Verify field labels against your live wizard Steps 2 through 4 below describe the standard field set for the Create Database Instance wizard. Console UI details (exact labels, dropdown options, ordering) may vary slightly release-to-release. If a field name you see doesn't match this doc, follow the live wizard — it's the source of truth. :::
Which private network the instance's endpoint will live on. This is a locked choice.
| Field | Notes |
|---|---|
| Network | The private network your app VMs are on. If you're using the default project network, pick that. |
| Subnet | Optional. If the network has multiple subnets and you want to pin the DB to one, pick it here. Otherwise the platform picks a subnet with free addresses. |
| Security context | The database instance's own firewall accepts the engine's port (3306 for MySQL/MariaDB, 5432 for PostgreSQL) from the private network. Outbound rules on the client VM's security group still apply. |
:::caution No public IP Managed database instances are private by default and cannot have a floating IP attached. If you need to reach the DB from outside the cloud, put an app VM or a jump host on the same private network and connect through it, or run a VPN. :::
Step 3 — Initialize Databases
The wizard lets you create the first database and its owning user in one shot.
| Field | Notes |
|---|---|
| Initial Database | The first schema name (app_prod, analytics). Lowercase, no spaces, digits and underscores fine. For PostgreSQL this becomes the initial database; for MySQL/MariaDB, the initial schema. |
| Username | The first application user (app, analytics_ro). Keep this separate from any admin account — never let your app connect as root. |
| Password | Set a strong one. Store it in your secret manager immediately — the console will not show it again. |
| Host | For MySQL/MariaDB, restricts which hosts the user can connect from. % allows any host inside the private network; a specific address restricts to that IP. |
Additional databases and users can be added later from the instance detail page's Databases and Users tabs.
Step 4 — Advanced (optional)
You can leave both blank and change them after creation.
| Field | Notes |
|---|---|
| Configuration Group | Attach a configuration group so the instance boots with tuned parameters. Only groups matching this instance's datastore + version show up. See Configuration groups. |
| Backup Window / Schedule | If you want automated backups from day one, set the schedule here. Otherwise use the instance's Backups tab afterwards to enable it. See Backups & restore. |
| Backup Retention | How many days of automated backups to keep. Balance restore reach against object-storage cost. |
After you click Create
Click Create in the bottom-right of Step 4. The instance moves through:
BUILD— the platform provisions the compute behind the endpoint and lays down the storage. 30–90 seconds.BACKUP/RESTORE_BACKUP— transient states you may see if the instance is being cloned or restored from a backup.ACTIVE— ready for connections. The endpoint address for your app appears on the instance's detail page.
If it stalls on BUILD for more than 10 minutes, email info@thewahda.com with the instance ID.
Connect for the first time
Grab the endpoint from Databases → Instances → <your-instance> → Detail. It's a private address plus the engine's default port.
From a VM on the same private network
MySQL / MariaDB
mysql -h <endpoint> -P 3306 -u <username> -p <initial-db>
PostgreSQL
psql -h <endpoint> -p 5432 -U <username> -d <initial-db>
You'll be prompted for the password you set in Step 3.
Smoke test
Once connected, run one query to prove the round-trip works.
-- MySQL / MariaDB
SELECT VERSION(), NOW();
-- PostgreSQL
SELECT version(), now();
You should see the engine version you picked and the current server time.
After the instance is up
- Attach a configuration group if you didn't during creation. Parameter tuning (
innodb_buffer_pool_size,shared_buffers,max_connections) makes a big difference onm1.mediumandm1.large. - Turn on automated backups and take an on-demand backup right now. A production database with no proven backup path is a foot-gun.
- Consider a read replica if you'll ever have analytics or reporting queries competing with your app's writes.
- Wire your app to the endpoint. Store the endpoint, port, database name, user and password in your app's secret manager — never in source.
Troubleshooting
| Symptom | Where to look |
|---|---|
Stuck in BUILD past 10 minutes | Rare. Grab the instance UUID from the URL and email info@thewahda.com. |
Instance goes ACTIVE but the app can't connect | Check that the app VM is on the same private network as the DB. Check the app-side security group allows egress on 3306 / 5432. |
Access denied for the first user | Password mismatch or, for MySQL/MariaDB, the user's Host doesn't match the client's private IP. Reset the password from the Users tab and set Host to % if you're not sure. |
Too many connections right after launch | Default max_connections is conservative. Attach a configuration group that raises it; restart the instance. |
| Ran out of storage | Grow the volume from the instance's detail page — you can't shrink it back, so grow in reasonable steps. |
| Can't remember the password | The console can't show it — reset it from the Users tab and roll the app's secret. |
Next steps
- Read replicas → — add a read-only copy for analytics or scale.
- Backups & restore → — schedule automated backups, take on-demand ones, restore into a new instance.
- Configuration groups → — tune parameters through the console.
- Create a VM → — the app server that will consume the database.
- Security groups → — control who can talk to the app VM.