Quick Start

ElmoDB provisions managed PostgreSQL and MySQL databases in seconds. Each database runs in an isolated Docker container behind an authenticated proxy — no infrastructure to manage on your end.

  1. Go to My Databases and click + New Database.
  2. Choose an engine (PostgreSQL or MySQL) and give your database a name.
  3. Your database will be ready in under a minute. Copy the credentials — the password is shown only once.
  4. Connect using any standard client.
Alpha limits: Each account can have up to 2 databases and 8 databases can run system-wide at once. Idle databases are automatically stopped after 45 minutes to conserve resources — your data is always preserved. You can start them again at any time from the dashboard.

Your Credentials

After creation you'll see something like this:

Engine:   PostgreSQL 16
Host:     100.54.192.201
Port:     6432
Database: myapp_db
Username: myapp_db
Password: a8f3k2p9...

Connection strings are shown in the dashboard for psql, mysql, Python, JavaScript, and Go. Click the expand arrow next to any database to see them.

Proxy ports: PostgreSQL connections go through PgBouncer on port 6432. MySQL connections go through ProxySQL on port 3306. Direct container ports are firewalled — always use the proxy port.

Command Line

The standard CLI tools work without any configuration changes. Copy the connection string from the dashboard and paste it directly.

PostgreSQL — psql

URI form (recommended)
psql "postgresql://myapp_db:password@100.54.192.201:6432/myapp_db"
Flags form
psql -h 100.54.192.201 -p 6432 -U myapp_db -d myapp_db

Install psql: brew install postgresql@16 on macOS  ·  apt install postgresql-client on Ubuntu/Debian

MySQL — mysql CLI

URI form
mysql "mysql://myapp_db:password@100.54.192.201:3306/myapp_db"
Flags form
mysql -h 100.54.192.201 -P 3306 -u myapp_db -p myapp_db

Install mysql client: brew install mysql-client on macOS  ·  apt install mysql-client on Ubuntu/Debian

GUI Clients

Any GUI database client that supports PostgreSQL or MySQL will work with ElmoDB. Enter your host, port, database name, username, and password — no SSH tunneling or special settings required.

Connection tip: In your client's connection form, use the host and port from your credentials — not a connection string. Set SSL/TLS to "prefer" or leave it off; ElmoDB connections are over a private network.

Connecting From Code

Use any standard PostgreSQL or MySQL driver. The examples below use the connection details from your dashboard — substitute your actual host, database name, and password.

PostgreSQL

Python · psycopg2
# pip install psycopg2-binary
import psycopg2

conn = psycopg2.connect(
    host="100.54.192.201",
    port=6432,
    dbname="myapp_db",
    user="myapp_db",
    password="your_password",
)

with conn.cursor() as cur:
    cur.execute("SELECT version();")
    print(cur.fetchone()[0])

conn.close()

Also works with psycopg3 and SQLAlchemy (postgresql+psycopg2://user:pass@host:6432/db).

JavaScript · node-postgres (pg)
// npm install pg
const { Client } = require('pg');

const client = new Client({
  host:     '100.54.192.201',
  port:     6432,
  database: 'myapp_db',
  user:     'myapp_db',
  password: 'your_password',
});

await client.connect();
const res = await client.query('SELECT NOW()');
console.log(res.rows[0]);
await client.end();

Works with pg, Knex.js, Prisma, and Drizzle ORM.

Go · pgx
// go get github.com/jackc/pgx/v5
package main

import (
    "context"
    "fmt"
    "github.com/jackc/pgx/v5"
)

func main() {
    dsn := "postgresql://myapp_db:your_password@100.54.192.201:6432/myapp_db"
    conn, err := pgx.Connect(context.Background(), dsn)
    if err != nil { panic(err) }
    defer conn.Close(context.Background())

    var greeting string
    conn.QueryRow(context.Background(), "SELECT 'hello from ElmoDB'").Scan(&greeting)
    fmt.Println(greeting)
}

Also works with the standard database/sql interface via lib/pq or pgx stdlib adapter.

MySQL

Python · mysql-connector-python
# pip install mysql-connector-python
import mysql.connector

conn = mysql.connector.connect(
    host="100.54.192.201",
    port=3306,
    database="myapp_db",
    user="myapp_db",
    password="your_password",
)

cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print(cursor.fetchone()[0])
conn.close()

Also works with PyMySQL and SQLAlchemy (mysql+pymysql://user:pass@host:3306/db).

JavaScript · mysql2
// npm install mysql2
const mysql = require('mysql2/promise');

const conn = await mysql.createConnection({
  host:     '100.54.192.201',
  port:     3306,
  database: 'myapp_db',
  user:     'myapp_db',
  password: 'your_password',
});

const [rows] = await conn.execute('SELECT NOW() AS now');
console.log(rows[0].now);
await conn.end();

Works with mysql2, Knex.js, and Prisma.

Go · go-sql-driver/mysql
// go get github.com/go-sql-driver/mysql
package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    dsn := "myapp_db:your_password@tcp(100.54.192.201:3306)/myapp_db"
    db, err := sql.Open("mysql", dsn)
    if err != nil { panic(err) }
    defer db.Close()

    var version string
    db.QueryRow("SELECT VERSION()").Scan(&version)
    fmt.Println(version)
}

PostgreSQL PostgreSQL 16 Reference

ElmoDB runs PostgreSQL 16. The official documentation covers everything from SQL syntax to extensions and replication.

Official Docs v16
The complete PostgreSQL 16 manual
SQL Language
Syntax, data types, and commands
Client Tools
psql and admin utilities

MySQL MySQL 8.0 Reference

ElmoDB runs MySQL 8.0. The official reference manual covers the full SQL dialect, storage engines, JSON support, and client libraries.

Official Docs 8.0
The complete MySQL 8.0 reference
SQL Language
Syntax, data types, and statements
Client Tools
mysql CLI and admin utilities