GumMySQL
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.json shows 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,
WHERE filter, 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+Enter to run, Ctrl+Shift+Enter for selection, Ctrl+E for 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
.sql file
- 🩺 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
USE before 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
SELECT only, save with empty password, and you have a safe-by-default browsing connection.
- Big databases: bump
pageSize to 500 or 1000 for faster scrolling. Pagination uses LIMIT/OFFSET, so deep pages on huge tables can be slow — use WHERE to 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
| |