Data and certificates

Databases and auraDB

Each database is bound to a site and created on the engine you choose. auraDB, built into the panel, is where you browse schemas, run SQL and edit data.

Verified against auraPanel 1.21.3· Last updated 17 September 2026

Engines

auraPanel manages MariaDB (10.11, 11.4 or 11.8) and PostgreSQL (16, 17 or 18). Choose them at install time or add them later under Services → Packages, which adds the vendor repository and starts the service. A site's Databases tab offers only the engines that are installed.

Both engines listen on loopback only. Application users are granted access from localhost and 127.0.0.1; nothing is exposed to the network and the firewall does not open the database ports. Remote database access is not a panel feature.

Create a database

  1. Open the site, then its Databases tab, then Add database.
  2. Choose the engine, a database name and a user. Names start with a letter and use letters, digits and underscores, up to 64 characters. A random password is pre-filled.
  3. Create. The database and user are created and bound to this site.

The password is shown once, in the confirmation dialog. Copy it into your application's configuration then. You can reveal it again later from the database's menu or with apcli db password; both are recorded in the audit log.

Connection details for applications on the same server:

EngineHostPortNotes
MariaDBlocalhost (socket) or 127.0.0.13306Databases are created as utf8mb4 / utf8mb4_unicode_ci.
PostgreSQL127.0.0.15432The user owns the database.

One-click applications create their own database. WordPress gets wp_ plus a random suffix; other applications use the site's user name with hyphens replaced by underscores.

Import and export

From a shell on the server. The domain can be omitted when you are inside the site's directory.

apcli db list example.com
apcli db create example.com --engine postgres --name app_db --user app_user
apcli db import example.com dump.sql.gz            # .sql, .sql.gz or .sql.bz2
apcli db export example.com --name app_db          # writes app_db-YYYYMMDD-HHMMSS.sql.gz
apcli db export example.com --name app_db --plain --out - > app_db.sql
apcli db password example.com --name app_db

Imports detect gzip and bzip2 by their magic bytes and rewrite DEFINER clauses to the destination user, so a dump taken elsewhere loads without editing. PostgreSQL exports use --no-owner --no-acl so they restore cleanly under a different role.

Administer data in auraDB

auraDB is the panel's database administration screen, included with every licence. Press Open next to a database and it opens already connected; no credentials to paste. It offers a schema browser, table detail (columns, indexes, foreign keys, triggers), a row grid with inline editing and per-column filters, a SQL editor with an EXPLAIN inspector, an ER diagram, query history and saved queries, user and privilege management, and server status.

Every action in the interface generates SQL and shows it to you before it runs, and every statement passes the same checks:

  • Roles from viewer to owner decide who may write, run DDL or manage grants.
  • Mass writes (an UPDATE or DELETE without WHERE, TRUNCATE) always require a second confirmation.
  • Forbidden statements that read or write server files (LOAD_FILE, INTO OUTFILE, COPY … FROM PROGRAM, pg_read_file) cannot be authorised by any role.
  • A connection marked read-only cannot be written to, even by an owner.

Defaults: queries time out after 30 seconds, results are capped at 10,000 rows or 50 MiB and marked as truncated, and one query runs at a time per user and connection. Everything auraDB does is recorded in a hash-chained audit file at /var/lib/aurapanel/auradb/audit.ndjson as well as the panel's audit log.

A standalone auradb binary, for servers without the panel, is published with each release and documented separately; it is not part of the .deb.

Delete a database

Deleting drops the database and its dedicated user immediately and irreversibly. Export first, or rely on a recent backup, which always includes the site's databases.

Common messages

"MariaDB isn't running on this host. Start it from Instance → Services (or `systemctl start mariadb`), then try again."

The engine is installed but stopped. Start it from the Instance screen or with apcli server restart mariadb.

"… is not installed on this host."

Install the engine under Services → Packages.

"invalid identifier"

Database and user names must start with a letter and contain only letters, digits and underscores.

"no dump tool installed for … on this host"

mariadb-dump or pg_dump is missing; reinstall the engine's client package.

Try the live demo

A real auraPanel on a real server, shared with everyone. Sign in with the demo account and click around.

Email
demo@goaura.one
Password
demo1234
Open the demo panel ↗

Shared public demo, so please don’t put anything personal in it. More about the demo →

Talk to us

Tell us what you need and how to reach you. A person reads this, not a queue.

We use these details only to reply to you. Privacy

Recent updates

What shipped in the last releases. With automatic updates on, each lands on your server the moment it is published.

  1. v1.21.3
    Framework sites were undetectable, and a restore could silently point the copy at the original's live database.

    DetectApp looked for each application's signature relative to the docroot — but every PHP framework in the registry serves from a subdirectory (DocrootSub: public, webroot, web, pub, docroot) and keeps the file that identifies it one level *above* that. So the Laravel signature searched <project>/public/artisan,…

  2. v1.21.2
    Restarting nginx now blocks the panel and reconnects, instead of showing a notice.

    v1.21.1 stopped the false "HTTP 520" but only put up a toast — and a toast is the wrong affordance when the panel itself is about to go away: the page sat there looking broken while every request failed underneath it.

  3. v1.21.1
    Restarting nginx from Services no longer reports a false failure.

    It showed "Restart failed — HTTP 520". The panel is reverse-proxied *by* nginx, so the request deadlocked against itself: the handler blocked waiting for the restart to finish, while nginx's graceful stop waited for that very request to drain. Neither could proceed until nginx's stop-retry timeout force-killed it,…

  4. v1.21.0
    Per-site X-Frame-Options, fixing page builders that couldn't load their preview.

    Elementor's editor failed with *"Multiple 'X-Frame-Options' headers with conflicting values ('DENY, SAMEORIGIN')"*. The cause is that nginx's add_header appends rather than replaces: when the application also sets the header — a WordPress security plugin, or a CDN transform — the browser received two values,…

  5. v1.20.6
    The multi-database restore refusal now says what is in the backup and what still works.

    It read only "Restoring a multi-database site isn't supported yet", which is a dead end: it named neither the databases involved, nor why one of them is the limit, nor any route forward.

  6. v1.20.5
    Services: cards in a row now match heights.

    Like the settings grid before it, the Services grid pinned each card to its own content height, so a row often showed one card noticeably shorter than the card beside it. Each row now takes the taller card's height and both fill it, and it re-balances as content changes — a runtime installed, a longer service list.

  7. v1.20.4
    Settings: paired cards now match heights.

    Organisation / Panel Domain and auraPanel Updates / Session timeout each sat at their own content height, so a row showed one card visibly shorter than its neighbour. Each row now takes the taller card's height and both fill it — driven by content, not a fixed value, so it still adapts as a card grows (a validation…

  8. v1.20.3
    Settings: Organisation and Panel Domain now share a row too.

    They were full-width blocks stacked above the rest of the page; they now sit side by side in the same two-column grid as the Updates / Session timeout pair, so the top of Settings reads as two tidy rows instead of four stacked bands. Both cards shrink cleanly — the logo drop zone is a fixed 44×44 and the name field…

All releases on GitHub ↗