Fourteen databases.One free app.
Maben Base is a database client for the Mac. Open Postgres, MySQL, SQLite, SQL Server, MongoDB and nine more in one window, edit rows like a spreadsheet, and nothing is written until you save.
This window works. Double-click a cell, add or delete a row, then press Show SQL or Save. It is a copy inside this page, so nothing leaves it.
Works with the databases you already run.
Fourteen engines, and rows can be edited in every one of them. Each driver was written for this app, so there is nothing to install for most.
| Engine | Connects through | URL to paste | Rows | Structure |
|---|---|---|---|---|
| PostgreSQL | Wire protocol: TLS, SCRAM, MD5 | postgres:// | edit | edit |
| MySQL and MariaDB | Wire protocol: TLS, caching_sha2, native | mysql:// | edit | edit |
| SQLite | System library | sqlite:// | edit | edit |
| SQL Server and Azure SQL | TDS 7.4, TLS or strict TDS 8 | sqlserver:// | edit | view |
| Oracle | Your sqlplus (Instant Client) | oracle:// | edit | view |
| ClickHouse | HTTP interface | clickhouse:// | edit as mutations | view |
| DuckDB | Your duckdb tool | duckdb:// | edit | edit |
| libSQL and Turso | Hrana over HTTP | libsql:// | edit | edit |
| Cloudflare D1 | REST API, API token | d1:// | edit | view |
| Snowflake | SQL API v2, access token or key pair | snowflake:// | edit | view |
| BigQuery | REST API, service account or gcloud | bigquery:// | edit with a primary key | view |
| Cassandra and ScyllaDB | CQL native protocol v4 | cassandra:// | edit | view |
| MongoDB | OP_MSG, SCRAM, mongodb+srv | mongodb:// | edit by _id | view |
| Redis and Valkey | RESP2 | redis:// | edit the keys table | – |
| No engine matches that. | ||||
Pink cells are what you can edit, as in the app.Where structure says view, the Structure tab shows it.
Paste a URL. The form fills itself in.
No plug-ins and no drivers to hunt down: each one was written for this app. Oracle and DuckDB use the tool you already have for them. Type in the field, or try one of these:
Nothing is written until you save.
Change cells, delete rows, add new ones. Every edit waits in colour: pink for changed, red for deleted, green for new. ⌘S then writes it all as one transaction.
- Show SQL lists every statement before it runs
- If one statement fails, none of them happened
- If a row changed underneath you, nothing is saved
| 2 | Jonas Berg | jonas@hey.com | Oslo | changed |
| 4 | Sam Okafor | sam@okafor.ng | Lagos | deleted |
| + | Lucía Romero | lucia@romero.es | Madrid | new |
BEGIN;UPDATE customers SET email = 'jonas@hey.com' WHERE id = 2;DELETE FROM customers WHERE id = 4;INSERT INTO customers (name, email, city) VALUES ('Lucía Romero', 'lucia@romero.es', 'Madrid');COMMIT;
Production asks first.
Every connection gets a colour tag and a safe mode. Tag one production and it asks before it writes, so a stray ⌘S never reaches the wrong server. Pick a mode to see what it does.
A table without a primary key can’t be edited by accident either: it is read-only.
UPDATE orders SET status = 'shipped' WHERE id = 5;Run⌘↩Nothing in the way. Fine for a database on your own Mac.
UPDATE orders SET status = 'shipped' WHERE id = 5;Run⌘↩Run this on shop-prod (production)?
It changes data or structure:
UPDATE orders SET status = 'shipped' WHERE id = 5;
Reads run straight away. Tagging a connection production turns this mode on.
SELECT * FROM customers LIMIT 300;Run⌘↩Run this on shop-prod (production)?
SELECT * FROM customers LIMIT 300;
For the server where even a heavy SELECT is a decision.
UPDATE orders SET status = 'shipped' WHERE id = 5;Run⌘↩Maben Base is trying to run statements that change data on shop-prod.
Touch ID or enter your password to allow this.
Your Mac’s password works where there is no Touch ID.
UPDATE orders SET status = 'shipped' WHERE id = 5;Run⌘↩Not run
shop-prod is read-only.
Change its safe mode in the connection’s settings to run statements that change data.
Reads still run. For the replica, the analytics database, or anything you only want to look at.
1SELECT c.city, COUNT(*) AS orders,2 SUM(o.total) AS revenue3FROM orders o4JOIN customers c ON c.5WHERE o.total > :min6GROUP BY c.city7ORDER BY revenue DESC8LIMIT 3;
- idint4
- citytext
- emailtext
| city | orders | revenue |
|---|---|---|
| Amsterdam | 214 | 48,210.50 |
| Rotterdam | 171 | 39,884.10 |
| Utrecht | 96 | 21,075.00 |
A query editor that knows your tables.
Completion for keywords, tables and columns: after c. it offers only that table's columns. Parameters like :min ask for a value before the query runs. Type sel, press Tab, and a snippet writes the rest.
- ⌘↩Run the statement at the cursor.
- ⇧⌘↩Run everything in the tab.
- ⌥⌘↩Run in a new tab, so the old results stay.
- ⌥⇧FFormat, clause by clause.
- ⌥⌘EExplain, with or without timings.
- ⌘DAnother cursor on the next match. ⌥-click adds one anywhere.
Quick to get around.
The layout you know from paid database apps: connections on the left, tables in tabs, and rows that load 300 at a time, sorted and filtered on the server.
Open anything
Any table, view or function, by a few letters of its name.
Switch database
And the connections and tabs you had open come back at launch.
Two tabs side by side
Split view puts a table next to a query, or two tables next to each other.
Cells like a spreadsheet
Select a block, move with the arrow keys, copy it, and paste rows from Numbers or Excel.
Foreign keys link
The arrow in a cell opens the row it points to. Try it on customer_id in the window at the top.
An editor per type
Return edits a cell. The row’s details open on the right: JSON, dates, enums, booleans, images.
Built for real servers.
Reach a server the way it wants to be reached, keep its password out of files, and take your data with you.
- SSH tunnels
- Through your own
ssh, so your config, agent and jump hosts work as they do in Terminal. A key, a key with a passphrase, or a password. - TLS
- Off, prefer, require or full verification, with your own CA file and a client certificate when the server wants one.
- Passwords
- In your Keychain, never in a file. That goes for SSH passphrases and certificate passwords too.
- Sync
- Connections sync through your own iCloud Drive, without passwords. Or move them to another Mac in a file, with the passwords encrypted by a passphrase you pick.
- Export
- A table, a result or a whole database, as CSV, JSON, Excel, Markdown or SQL.
- Import
- A CSV into a table, in one transaction. Or a SQL file, statement by statement.
- Backup
- With
pg_dumpormysqldumpwhen you have them, and SQLite's ownVACUUM INTO. - Server window
- For Postgres and MySQL: running queries you can stop, users and permissions, and live metrics.
Tab limits.Trials.Licence keys.Accounts.Analytics.
No limits on tabs, windows, connections or rows. It talks to your databases, and to GitHub to ask whether there is a new version. The source is on GitHub under the MIT licence.