# Your databases, like a safe spreadsheet

A web manager for the PostgreSQL and MySQL databases running on your VPS: you browse tables, edit rows, query with SQL, see the execution plan and import or export CSV and Excel. Everything goes through a private SSH tunnel, so the database port is never exposed to the internet.

URL: https://ardumaker.com/en/servicios/gestor-bases-de-datos/

- No exposed port
- Excel import and export
- Safe SQL console

## Here's what it looks like in the panel

Real screenshots of the ArduMaker panel, not mockups.

![Database manager: Data grid](https://ardumaker.com/screenshots/servicios/gestor-bases-de-datos-1.jpg)
**Data grid**. Editable rows, filters, import and export.

![Database manager: SQL console](https://ardumaker.com/screenshots/servicios/gestor-bases-de-datos-2.jpg)
**SQL console**. Read-only queries, with timing and CSV or JSON export.

![Database manager: Table structure](https://ardumaker.com/screenshots/servicios/gestor-bases-de-datos-3.jpg)
**Table structure**. Columns, types, nullability and foreign keys.

## What you did with phpMyAdmin or pgAdmin, without installing them

One interface for both engines, designed so you don't break data by accident.

- **Schema browser**: Databases, tables and the structure of each one: columns, types, nulls, primary key, foreign keys and indexes.
- **Fast grid**: Pagination by primary key: page 5000 costs the same as page 1. Filters, row counts and up to 1000 rows per page.
- **Row-by-row editing**: You insert, update and delete by primary key. The grid never receives SQL.
- **Read-only SQL console**: One statement at a time; send a write through the console and it's rejected.
- **Native EXPLAIN**: Each engine's execution plan, exactly as it returns it.
- **DDL with a warning**: CREATE, ALTER and DROP go through their own path; on MySQL you're warned beforehand that DDL can't be undone.
- **Export**: To CSV (a ZIP if there are several tables) or to Excel with one sheet per table, filters included.
- **All-or-nothing import**: A dry run that doesn't touch the database and flags problems by row and column; then a single transaction that rolls back entirely if anything fails.
- **Access over a private tunnel**: A dedicated sshd reachable only from the private network, with an ephemeral key limited to the engine's port. 5432 and 3306 are never published.
- **Ephemeral key per session**: Access uses a temporary key limited to the engine's port. There's no permanent credential stored in the browser.
- **No phpMyAdmin to install**: There's no extra PHP running on your server, and no admin URL published and waiting for brute-force attempts.

## How to use it

1. **Open the manager**: From the VPS that has PostgreSQL or MySQL.
2. **One-time setup**: The first time, the private access is prepared, with a progress bar.
3. **Work with your data**: Browse, edit, query, import and export.
4. **Export what you need**: To CSV or to Excel with one sheet per table, respecting the filters you have set.

## Limits

What you should know before you start, no fine print.

- Supported engines: PostgreSQL and MySQL, running on the VPS itself and with the VPS powered on.
- Access isn't a direct connection from the browser to the database: the VPS brings up a dedicated sshd, reachable only from the private network, and the manager comes in through it with an ephemeral key limited to the engine's port. 5432 and 3306 are never published.
- Preparing the access restarts the VPS's sshd once, the first time you open the manager.
- It needs Ubuntu 22.04 or later. On 20.04 the base configuration writes KbdInteractiveAuthentication, which OpenSSH 8.2 doesn't know, so sshd -t fails and the change is rolled back; 18.04's sshd_config doesn't include sshd_config.d; and 16.04's OpenSSH 7.2 doesn't understand the Include directive.
- The grid paginates by primary key, not with OFFSET. That's why page 5000 costs the same as page 1: on a big table, that's exactly where a classic phpMyAdmin starts to crawl.
- The SQL console is read-only and takes one statement at a time. Writes go row by row by primary key, and DDL has its own flow with a warning: on MySQL you're also told it can't be undone.
- Import: CSV or XLSX up to 32 MB, INSERT only, no upsert. First it runs a dry run that doesn't touch the database and flags the problems by row and column; then it all goes in a single transaction that rolls back entirely if anything fails.
- Export: up to 1,000,000 rows by default. Excel allows 1,048,575 rows per sheet, so above that CSV is the better option.
- The grid never receives SQL written by the user: the operations are built server-side from the primary key.
- Real root over SSH: the panel is a shortcut, not a cage. Anything it does with a button, you can also do by hand.

## Or just ask Claude, ChatGPT or Cursor

Everything you see in the panel, your AI agent can do through the ArduMaker MCP server: with your authorization, within the scope you grant, and with every action audited. [See what the MCP does](https://ardumaker.com/en/mcp/bases-de-datos/)

## Database manager: frequently asked questions

### Do I have to open my database port to the internet?

No. Access goes over a private SSH tunnel, and the key only allows reaching the engine's port.

### Can I break data from the SQL console?

No. The console is read-only; edits go row by row by primary key, and DDL has its own flow with a warning.

### What happens if an import fails halfway?

Nothing is left half-done: it all goes in one transaction and rolls back. Before that, the dry run shows you the errors row by row.

### What formats can I export to?

CSV (a ZIP if there are several tables) or Excel with one sheet per table.

### Is it an alternative to phpMyAdmin or Adminer?

Yes, and with one fundamental difference: there's no extra PHP running on your server and no admin URL published. Access goes over a private SSH tunnel with an ephemeral key limited to the engine's port.

### Why is pagination fast on big tables?

Because it paginates by primary key instead of using OFFSET. Page 5000 costs the same as page 1, which is exactly where a classic manager starts to crawl.

### Can I import a large CSV?

Up to 32 MB, in CSV or XLSX, INSERT only. Before touching the database it runs a dry run that flags the errors row by row; then it all goes in one transaction, so either everything goes in or nothing does.

### Which Ubuntu versions are supported?

22.04 or later. Earlier ones don't apply the tunnel configuration: on 20.04 sshd -t fails because of a directive OpenSSH 8.2 doesn't know, on 18.04 sshd_config doesn't include sshd_config.d, and on 16.04 OpenSSH 7.2 doesn't understand Include.

## Services that go well together

Everything runs on the same VPS and is managed from the same panel.

- [PostgreSQL](https://ardumaker.com/en/servicios/postgresql/): Install PostgreSQL and manage databases, users and permissions without the command line.
- [MySQL](https://ardumaker.com/en/servicios/mysql/): Install MySQL and manage databases, per-host users and permissions without touching the console.
- [SSH tunnels between VPSs](https://ardumaker.com/en/servicios/tuneles-ssh/): Connect private services between your VPSs (a database, Redis) over encrypted SSH, without exposing them to the internet.

**Your data, one click away and risk-free** Available on any VPS with PostgreSQL or MySQL. Not a separate product: it's in the panel of every ArduMaker VPS, right next to real root over SSH. [See plans](https://ardumaker.com/en/precios/)
