Browse, edit, and query MySQL / MariaDB databases inside VS Code — no separate client, no command line.
GumMySQL keeps your connections in a single sidebar, visible from every VS Code window. Click a table to browse rows, double-click a cell to edit, or open a SQL editor for ad-hoc queries. Passwords are stored in VS Code's encrypted SecretStorage — not plain text.
Features
- 🔌 Machine-wide connection list —
~/.gummysql/connections.jsonshows up in every VS Code window - 🔐 Encrypted password storage — credentials live in VS Code SecretStorage (OS keychain), never in plain config
- 🌳 Rich schema tree — Server → Databases → Tables / Views / Procedures / Functions / Triggers / Events → columns (with type, PK, NOT NULL, AUTO_INCREMENT badges)
- 📊 Spreadsheet-style data viewer — sticky header, click-to-sort,
WHEREfilter, pagination, show/hide columns - ✏️ Inline cell editing — double-click any cell, edit, press Enter. Uses the primary key to target the exact row.
- ➕ Insert / Delete rows — modal insert dialog with per-column NULL toggles; one-click delete with confirmation
- 🔎 SQL query editor —
Ctrl+Enterto run,Ctrl+Shift+Enterfor selection,Ctrl+Efor EXPLAIN - 🎯 EXPLAIN built-in — one click to see the query plan
- 📐 Schema tab — full CREATE statement, columns, foreign keys, indexes per table
- 📤 Export — CSV / TSV / JSON / JSON Lines / SQL INSERTs
- 📥 Import — CSV / TSV / JSON / JSON Lines into any existing table
- 💾 Database dump — full schema + data as a portable
.sqlfile - 🩺 Server tools — Processlist viewer (with kill query + auto-refresh),
SHOW VARIABLES,SHOW STATUS - 🛡 SSL support — verify or skip certificate verification, optional CA / client cert / key
- 🪶 Pure JavaScript driver (mysql2) — no native bindings, no rebuilds
Quick Start
- Install GumMySQL from the Marketplace
- Click the GumMySQL icon in the activity bar
- Add Connection… (the
+icon) → enter host, port, user, password, default DB - Pick Connect now when prompted — sidebar shows databases
- Expand a database → expand Tables → click a table to open the viewer
The Connection Registry
GumMySQL keeps one machine-wide list at ~/.gummysql/connections.json:
{
"version": 1,
"connections": [
{
"id": "mc-a1b2c3d4",
"name": "local-dev",
"host": "localhost",
"port": 3306,
"user": "root",
"defaultDatabase": "myapp",
"ssl": false,
"rejectUnauthorized": true,
"multipleStatements": false,
"addedAt": "2026-05-15T10:30:00.000Z"
}
]
}
Passwords are NOT in this file. They live in VS Code's SecretStorage (encrypted, OS-keychain-backed). You can safely commit this file, share it with your team, or sync it across machines — it leaks no secrets.
Table Viewer
| Action | How |
|---|---|
| Sort by column | Click column header (ASC → DESC → none) |
| Filter rows | Type a SQL WHERE expression and click Filter |
| Edit cell | Double-click the cell, type, press Enter |
| Insert NULL | While editing, clear the field and press Enter |
| Insert row | Click + Row — fill values, tick NULL for null fields |
| Delete row | Click 🗑 on the right side of the row |
| Show/hide columns | Click ⋮ Columns |
| Page | ‹ / › buttons, or type a page number and press Enter |
| View schema | Click the Schema tab |
Tables without a PRIMARY KEY are read-only in the viewer — without a PK there's no safe way to target a single row for UPDATE / DELETE. You can still browse and export them.
SQL Query Editor
| Shortcut | Action |
|---|---|
Ctrl+Enter |
Run the whole query |
Ctrl+Shift+Enter |
Run selected text only |
Ctrl+E |
EXPLAIN the query (or selection) |
Tab |
Insert 4 spaces |
- The DB dropdown at top picks the active database (issues a
USEbefore each run) - Multiple statements separated by
;are supported when the connection has Allow multiple statements enabled - Each result block shows row count, affected rows,
insertId, and timing
Processlist Viewer
Right-click a connected server → Show Processlist. You see every active thread with full INFO (the running query). Click Kill on any row to terminate it (with confirmation). Toggle Auto-refresh (2s) to watch live activity.
Settings
| Setting | Default | Description |
|---|---|---|
gumMySQL.pageSize |
100 |
Rows per page (10–5000) |
gumMySQL.confirmDestructive |
true |
Confirm before DROP, TRUNCATE, DELETE row |
gumMySQL.queryTimeout |
60000 |
Query timeout in ms |
gumMySQL.connectionTimeout |
10000 |
Connection timeout in ms |
gumMySQL.poolSize |
4 |
Max concurrent connections per server |
gumMySQL.dateFormat |
"iso" |
How to display DATE / DATETIME / TIMESTAMP |
Commands
All commands are available from the Command Palette (Ctrl+Shift+P):
| Command | What it does |
|---|---|
| GumMySQL: Add / Edit / Duplicate / Remove / Rename Connection | Manage saved connections |
| GumMySQL: Test Connection | Validate host / user / password without keeping the connection open |
| GumMySQL: Connect / Disconnect | Open or close the connection pool |
| GumMySQL: New SQL Query | Open the SQL editor against a connection (with optional active DB) |
| GumMySQL: Open Table | Open the table data viewer |
| GumMySQL: Create Database… | CREATE DATABASE with charset/collation picker |
| GumMySQL: Drop Database | DROP DATABASE (with confirmation) |
| GumMySQL: Create Table… | Open the SQL editor with a CREATE TABLE template |
| GumMySQL: Drop / Truncate / Rename Table | Schema operations on a table |
| GumMySQL: Show CREATE | View the CREATE statement for any object |
| GumMySQL: Export Table… | CSV / TSV / JSON / JSON Lines / SQL INSERTs |
| GumMySQL: Import Into Table… | Import CSV / TSV / JSON / JSON Lines |
| GumMySQL: Dump Database to SQL… | Full schema + data as a single .sql file |
| GumMySQL: Show Processlist | Live thread viewer with kill query |
| GumMySQL: Show Variables / Show Server Status | SHOW VARIABLES / SHOW STATUS as a text doc |
| GumMySQL: Copy Name / Copy Connection String | Quick clipboard helpers |
| GumMySQL: Open Registry | Edit ~/.gummysql/connections.json directly |
| GumMySQL: Refresh | Re-read schema from the server |
SSL
When adding a connection, pick SSL — verify certificate to enforce strict cert verification, or SSL — skip certificate verification for self-signed setups (development, staging). Inline PEM CA / cert / key can be added by editing the registry JSON if you need a custom trust chain.
Tips
- Passwords: leaving the password empty when adding a connection makes GumMySQL prompt on every connect — useful for production credentials you don't want stored.
- Read-only connections: create a MySQL user with
SELECTonly, save with empty password, and you have a safe-by-default browsing connection. - Big databases: bump
pageSizeto 500 or 1000 for faster scrolling. Pagination usesLIMIT/OFFSET, so deep pages on huge tables can be slow — useWHEREto scope. - Multi-statement scripts: enable Allow multiple statements when creating the connection. Off by default for safety against SQL injection through user-supplied parameters.
Companion extensions
Part of the Gum Suite:
- 🟢 GumRun — start / stop / restart your dev servers from VS Code
- 🟦 GumGo Preview — Go HTML template preview with click-to-jump
- 🟣 GumDotNet Form Viewer — preview C# / VB.NET WinForms designer files
- 🗄 GumSqlite — SQLite database manager
- 🐬 GumMySQL — MySQL / MariaDB client (you are here)
License
MIT