Databases
Start, connect, and run databases end to end, from data and queries to access, backups, and alerts.
Databases brings every database on this server, and any you connect elsewhere, into one place. Just Dashboard 0.8.4 opens PostgreSQL, MySQL and MariaDB, SQLite, SQL Server, ClickHouse, Oracle, MongoDB, and Redis, and recognises forks and relatives such as TimescaleDB, CockroachDB, Valkey, KeyDB, Dragonfly, and FerretDB. Each database shows only the pages its engine supports, in the engine's own words: Redis has Keys and Console, MongoDB has Documents and Aggregations.
The Control center opens on one line about all of them, a band of who holds the storage, who is connected, and how old each newest dump is, then every saved connection as a card, worst first: what it holds, its sessions, whether it answers, and its last dump. Switch to a table to compare many. What they feed draws the deployments, containers, and machines seen reading each database, and Found on this server lists servers running here that are not connected yet. Map draws the same wiring on its own page. Since 0.7.5 there is no Advisor and no automatic list of findings; problems show where they are, on the card or the database's own page.
Create or connect
- Choose Add a database. Adding one needs an administrator.
- Start a new one here runs a supported engine in a Docker container on this server. Pick an engine and version (each says when its support ends; releases past it are under Older versions), a name, and an initial database. Leave the password empty to have one generated and sealed with the connection. You can limit the container's memory and processors from the start. The dashboard waits for a working connection before listing it.
- Decide where the port should listen. The option to publish it on every interface and open the firewall is off by default, so a new database answers on this server only. Turn it on only if other machines must connect; then the password is all that stands between it and the internet.
- Connect to one saves a connection to an existing or remote server; it does not create that server. Found on this server connects a server the dashboard discovered here.
To change who can reach a database later, open Settings → Network. A container the dashboard owns can listen on This server only, on One address of this machine (a tailnet, VPN, or local-network address), for Allowed addresses only, or Anywhere. An allowed-address list is enforced before Docker forwards the connection, which a firewall rule alone cannot do for a published port. Each change shows the exact rules before it runs. A container that belongs to a Compose project cannot be changed here; change its port binding in the Compose file and redeploy. The same page can turn on TLS with a certificate from the dashboard's own authority for PostgreSQL, MySQL, MariaDB, MongoDB, Redis, or Valkey servers it started.
Connect, available on every page of a database, gives the connection string for where your program runs: this server, inside Docker beside the database, or from elsewhere. The password stays hidden; only an administrator can show or copy the real string, and each time is audited. Treat every copied string as a credential.
Explore and change data
Choose a database from the switcher. Data lists tables and rows; filters and sorting run on the server, and an export downloads the filtered, ordered view up to 100,000 rows. A displayed row count may be an estimate; use Count exactly when you need the real figure. Edits are staged, shown as statements, and applied in one transaction. A table without a primary key can be edited only where the engine can find a row by its values. Schema shows and edits structure and, on engines that have them, creates and edits functions, procedures, and triggers; PostgreSQL tables also have a Row security reading where you can try policies as a role.
Query runs statements in tabs. Run the statement runs the one under the cursor, including a whole procedure or block body; Run everything runs the script. A statement that can destroy data asks first. Explain shows a plan without running the statement, while Explain and measure runs it to time each step. On a PostgreSQL plan, What if? tries an index as a hypothetical one and compares the cost; nothing is created unless you choose to. Save a useful query for a later visit.
An optional assistant beside the editor can write a statement, explain an error or a plan, or draft a row-level security policy. It stays off until an administrator chooses a provider (Claude with an Anthropic API key, or an OpenAI-compatible server). It is told the schema's structure, sees rows only in a result you attach, and never runs anything without your own Run. It is refused on protected connections, and every question is audited.
Search finds a value across tables within bounded work limits. Diagram shows relationships and exports PNG, SVG, Mermaid, DBML, or JSON. Generate produces ORM models and, under Seed data, inserts made-up test rows that respect foreign keys after showing you the statements. Performance shows who is connected and what they are doing, locks, costly statements, and statement history over time; PostgreSQL without pg_stat_statements offers Turn on statement statistics. Logs follows the server's own log.
Run and protect it
Access manages accounts and grants, including PostgreSQL function and column privileges. Settings holds General (name, labels, and protection), Network, Resources (container limits, changed in place), Pooling (PgBouncer for PostgreSQL), Parameters, Extensions, Version (PostgreSQL major upgrades with the old server kept until you finish or revert), and Danger zone. Only the pages that apply to the engine and your role appear.
Protect a connection to refuse every change to its data or schema for every role. Reading, taking a dump, and stopping a runaway query still work.
Alerts tells your notification channels when a database stops answering, fills its disk, runs out of connections, falls behind on replication, or misses a backup. Import brings a database over from another server; on PostgreSQL it keeps the copy current through logical replication until you cut over. From the control center, MCP server gives AI clients keys that reach only the databases you choose, and Metrics export offers a Prometheus endpoint and sets how long recorded activity is kept.
Back up before a change
Backups on a database takes a dump with Back up now, lets you download it, Upload a dump from elsewhere, and restore into the same or a new database. Copy database copies it to a new database or another saved connection of the same engine. For a PostgreSQL server the dashboard runs, the same page can set up point-in-time recovery, which recovers into a new server beside the old one. Scheduled Backups can include native database dumps so a protected connection appears in Coverage. A database dump is different from a filesystem copy of a live data directory.
The Danger zone separates three different losses. Deleting a database asks you to type its name. Forget this connection removes the saved address, its password, and its saved queries; the database is not touched. Remove its container removes the whole server with the volumes it wrote to, not just one database. Read the confirmation and any dependency warning before proceeding.