The Mycelium SQL app icon

Mycelium SQL

macOS 13+ · window

One tunnel, one connection, one window for the query, the result and the history.

Download the DMG, drag Mycelium SQL to Applications, open it.

Mycelium SQL is a client for MySQL servers, reached directly or through an ssh bastion. Connections are added from inside the app, a bastion's tunnel is raised with your own ssh, and a connection is pinned rather than juggled — one editor, one results grid, one run log, a searchable history and a schema browser, all in the same window.

It ships with no connection targets: a fresh install connects to nothing until you add the first one. Passwords live in the login Keychain and nowhere else — never in a file the app writes.

It is free, with no account and no checkout, and it updates itself in the background once it is running.

See it

Mycelium SQL connected to a test database, a fourteen-line query in the editor, its results in the grid below and three runs in the output log
One editor, one results grid, one run log — every column labelled with its type, every run timed.
The schema browser with two tables expanded to their columns and types, beside a query against a view and its twelve rows
The schema browser sits beside the editor, so a column name is a glance away rather than a DESCRIBE.
The history panel filtered by a search for “cap”, showing four matching statements with their time, row count and environment
Every statement you run lands in one searchable history, across every environment.

How it works

  1. 01

    Add a connection

    Add a connection from inside the app — the host, the database, the account, and the bastion if it sits behind one. Mycelium SQL connects to nothing until you do.

  2. 02

    Pin the connection

    For a server behind a bastion, the app shells out to your own ssh against your own ~/.ssh/config to open the forward; a direct server is dialled as-is. Either way you get one pinned MySQL connection.

  3. 03

    Work in one window

    An editor, a results grid, a run log, searchable history and a schema browser share the same pinned connection until you switch it.

Privacy

Talks to your servers, and nothing else

Mycelium SQL talks to exactly the databases you configured, and the bastions in front of them, and — only if update checks are on — to its own update feed. There is no account, no server of this app's own, and no telemetry.

Passwords live in the login Keychain, under the service com.mycelium.sql, never in a file this app writes.

What it does

One pinned connection
A connection is chosen and held rather than juggled across tabs — the editor, the grid, the log and the history all follow the one you pinned.
Your own ssh, your own bastion
The tunnel is raised by executing your own ssh against your own ~/.ssh/config. Mycelium SQL never stores or reimplements a host key, a jump host, or a credential ssh already manages.
Nothing to connect to on first launch
A fresh install ships with no environments file. It names the file it would create and waits for you to write one, rather than guessing at a target.
History that stays local
Every executed statement lands in a local log, searchable later, and it never leaves the machine.

What it needs

  • macOS 13 or later
  • Apple silicon or Intel
  • Your own ssh access to the bastion, for a server that sits behind one
  • An environments file naming at least one target — the app shows you where to create it

Under the hood

A Go core owns the connection, the tunnel and the history; a Swift/AppKit window sits on top of it.

Update checks fetch a fixed Sparkle feed at myceliumtools.com/sql/appcast.xml. The check fetches only the feed itself — no system profile, hardware information, or usage data is sent with it.