Free database tool

Online MySQL client & browser tools

Use a free online MySQL client, or launch phpMyAdmin and Adminer with SSH tunnel support when shared hosting blocks direct remote MySQL access.

MySQL ExplorerTurnstile-protected hosted gateway
No session
01 · Verify and connect

Inspect when you must.
Leave no profile.

Try the lightweight explorerUse a live read-only database or stay entirely in this browser.

This focused explorer browses databases, schema objects, server-generated definitions, paginated rows, explicit exact counts, and current-session history. It deliberately has no SQL editor or write command. The hosted path is for occasional, last-resort inspection: after Turnstile and your click, the Kubernetes gateway opens one read-only MySQL session for no more than one hour.

◎ Fresh verification◌ No saved password◇ One-hour maximum
New connectionPublicly reachable MySQL · verified MySQL TLS by default
MYSQL

Requires TLS 1.2 or newer with a publicly trusted certificate. Custom CA certificates are not implemented.

Certificate hostname advanced

Needed only when the connection address differs from the name on the publicly trusted certificate—for example, an SSH target of 127.0.0.1 whose certificate names db.example.com. This changes the expected identity; it does not add a custom trust anchor.

Need a free TLS certificate?
  1. Create a public DNS name such as mysql.example.com pointing to the MySQL server's public address.
  2. Issue a free certificate for that exact name with Certbot. HTTP-01 validation needs port 80 reachable; use DNS-01 when it is not.
  3. Configure MySQL with the issued fullchain.pem and privkey.pem, enable require_secure_transport, and reload MySQL after each renewal.
  4. Enter that DNS name here. If connecting by IP instead, enter the DNS name as the TLS server name.

Let's Encrypt validates control of the DNS name, not MySQL's port. Keep the private key readable only by the MySQL service account and automate renewal plus a safe MySQL reload.

Anti-abuse check
A fresh check appears here after you choose SSH test, database test, connect, or real demo. Its token can authorize only that one operation.
Why is Turnstile required?

The MySQL connection originates from the odmin.biz Kubernetes gateway, not directly from your device's IP address. Every connection needs a fresh challenge and lasts no more than one hour. Cloudflare processes the verification traffic; this application keeps no request history.

A connection closes after 15 minutes without activity or one hour total. Reconnecting always requires a fresh Turnstile check.

Why use the built-in SSH tunnel?

It can reach a private MySQL address through one public SSH bastion without publishing the database port or uploading your private key. The gateway pins a supplied fingerprint or asks you to confirm the observed fingerprint for this attempt, then asks this browser to sign the SSH authentication challenge and opens one MySQL-only forwarding channel. Use a dedicated SSH key and a dedicated read-only MySQL account. The SSH and MySQL servers may retain their own connection and query logs.

Temporarily expose MySQL running on this machine

A third-party reverse TCP tunnel is a separate alternative to the built-in SSH checkbox. For example, run this in your own terminal:

ssh -p 443 -R0:localhost:3306 tcp@free.pinggy.io

Pinggy should print an assigned public hostname and port. Leave Connect through SSH tunnel unchecked and enter that assigned endpoint as the MySQL host and port above. Verified TLS will usually reject a local, self-signed, or hostname-mismatched MySQL certificate; in that case you will probably need to select Unverified TLS (unsafe) and explicitly accept its per-attempt warning. If the local server has no MySQL TLS at all, only Plaintext (unsafe) can work, exposing database credentials and traffic beyond the protected browser-to-gateway leg. The endpoint may be publicly reachable: use a dedicated read-only account, understand Pinggy's policies, and stop the terminal tunnel immediately afterward.

Prefill a direct or SSH connection from a URL

Use a browser-only #mysql? fragment on https://odmin.biz/tools/mysql-client. Direct connections use route=direct, host, port, username, and optional database. Add SSH with route=ssh, ssh=username@host, configurable sshPort, and optional sshHostKeySha256. URL-encode every value. Passwords, private keys, passphrases, TLS choices, consent, and Turnstile tokens are rejected; the fragment is removed immediately and never starts a connection.

This SSH key is encrypted

is a recognized password-protected OpenSSH key. Enter its passphrase now, or choose Not now and use the editable field in the connection form later. The passphrase stays in this browser on your machine and is never sent to the gateway.

Connect without verifying the server?

Your browser connection to the odmin.biz MySQL gateway at mysql2.odmin.biz remains encrypted and authenticated. The MySQL protocol will use TLS without certificate or identity verification. An active attacker on its applicable path may impersonate the selected MySQL server and intercept or modify authentication and database data.

Trust this SSH host for this attempt?

No fingerprint was pinned. The gateway observed this host key during the current connection to :22:

Compare it with a fingerprint obtained through a separate trusted channel when possible. Accepting an unverified fingerprint can authenticate an attacker intercepting this first connection. The private key still stays on this device, and no authentication signature is sent until you continue.

Server-hosted MySQL web apps

phpMyAdmin and Adminer with SSH tunnel support

Launch a private instance through SSH when shared hosting or a firewall blocks direct remote MySQL access. Each demo image below opens the full community-edition app with dedicated read-only Sakila data; do not enter private data.

Adminer live demo previewAdminerThe lightest full-page database console.Checking live status…
phpMyAdmin live demo previewphpMyAdminThe familiar web interface for MySQL.Checking live status…
DbGate live demo previewDbGateA modern multi-panel database workspace.Checking live status…
CloudBeaver live demo previewCloudBeaverA full community data-management workspace.Checking live status…
MySQL Shell GUI live demo previewMySQL Shell GUIA hardened graphical workspace for MySQL Shell.Checking live status…

Your connection, your instance

Need any of these tools through SSH?

Launch a private Adminer, phpMyAdmin, DbGate, CloudBeaver, or MySQL Shell GUI instance through a verified SSH tunnel. Instances are free, but deliberately limited to a small shared pool. Verify once to see the live number of launch slots and continue.

About this tool

What online mysql client & browser tools does

Use the focused read-only online MySQL client for occasional inspection of your own authorized database, or launch isolated server-hosted phpMyAdmin and Adminer with an SSH tunnel when shared hosting or a firewall blocks direct remote MySQL access. Separate live demos use dedicated Sakila sample data and must not receive private data. The explorer browses schema objects, database and object DDL, metadata, and paginated rows without saving a connection profile.

How it works

The browser always reaches the odmin.biz MySQL gateway at mysql2.odmin.biz over authenticated WSS/TLS. Fresh Turnstile is verified before every user or Real-demo connection and every SSH tunnel diagnostic. Direct mode pins one validated public MySQL address. User SSH mode instead pins one public SSH endpoint with a configurable port, enforces an optional SHA-256 host-key pin or asks you to confirm the observed fingerprint for that attempt, asks the browser to sign a validated authentication challenge with a selected Ed25519 or RSA key that never leaves your machine, and opens one MySQL-only forwarding channel. Test SSH tunnel opens that exact channel and closes it without a MySQL payload; Test database connection performs the normal transport, read-only setup, and initial metadata read before closing. The recommended Real demo sends no connection fields and uses only a fixed, dedicated backend read-only account and optional gateway-held SSH key; the local Sample data demo makes no network request. The gateway uses the selected MySQL transport, sets the session default transaction mode to read-only, and exposes only structured metadata, bounded database/object definition and row reads, database refresh, and an explicit exact count—not arbitrary SQL. If you select a database, the explorer and refresh stay scoped to it; omitting the database shows the account-visible list. Exact COUNT(*) runs only when you press Count rows exactly and can be expensive. Fetched groups show their exact loaded child count without another SQL query. The explorer sidebar is resizable and collapsible, with its width kept only in current-session memory. Once connected, the workbench can fill the browser window and exits that view from its toggle or the Escape key. Structured operations remain inside the verified live session, which ends after fifteen minutes idle or one hour total. Reconnection requires a fresh challenge. The browser keeps at most 100 generated operation summaries and a user-expandable debug result capped at 32 KiB per entry in current-session memory.

Common uses

When to use it

  • Launch phpMyAdmin or Adminer through an SSH tunnel when shared hosting blocks direct remote MySQL access
  • Inspect a public development or staging schema when a normal database client is unavailable
  • Reach one private MySQL target through a trusted public SSH bastion without uploading the private key
  • Review database, table, and view DDL, columns, types, grouped indexes, generated index statements, foreign keys, constraints, triggers, and partitions
  • Try the real gateway against a fixed non-sensitive demo or explore realistic entirely local sample data
  • Refresh the selected database or account-visible database list and review generated read operations from the current session
  • Read formatted routine, event, trigger, and view definitions
  • Browse table or view rows with server-side sorting and pagination

Scope

Limits to know

  • This is an occasional inspection fallback, not a replacement for a trusted, managed database client
  • Every connection and SSH diagnostic requires fresh Turnstile; live sessions end after fifteen minutes idle or one hour total
  • Direct MySQL and SSH bastion endpoints must be public; a private or loopback MySQL target is accepted only through SSH
  • SSH supports OpenSSH Ed25519/RSA, traditional unencrypted PKCS#1 RSA, and unencrypted PKCS#8 Ed25519/RSA keys
  • A supplied host-key fingerprint should be verified separately; without one, accepting the fingerprint observed on the current connection is vulnerable to first-connection interception
  • The private key stays in the browser, but browser code cannot interpret the opaque SSH session identifier and trusts the reviewed gateway to bind each signature request to the selected SSH host
  • Verified TLS requires a certificate that chains to a publicly trusted CA and matches the selected identity
  • The browser-to-mysql2.odmin.biz leg always uses authenticated WSS/TLS; SSH separately protects the gateway-to-bastion leg
  • Unverified MySQL TLS does not authenticate the selected database and plaintext has no MySQL-layer protection beyond the SSH server
  • Custom CA connections are not implemented and no transport mode falls back automatically
  • The history lists only generated explorer operations and capped debug results from the current session; it is not the MySQL server's general query log
  • The explorer is intentionally read-only and does not include a raw SQL editor
  • The five-session-per-IP memory limit is enforced per gateway process, not as a globally coordinated counter
  • Sorting large unindexed columns and an explicit exact row count may be expensive, and offset pages can change while a table is updated

Worked example

Example input and result

Use the built-in explorer demo, open a full server-hosted web app with sample data, or connect the lightweight explorer with a dedicated read-only account.

Input
db.example.com:3306 · readonly · sales
Result
sales → Tables → customers → Columns / Indexes / Foreign keys
customers · 25 rows on this page · 86 exact total after Count rows exactly

Quick answers

Online MySQL client & browser tools FAQ

Does the service receive my MySQL password?

Yes, transiently. After Turnstile and Connect, the password crosses the authenticated WSS/TLS connection from your browser to the odmin.biz MySQL gateway at mysql2.odmin.biz and exists in gateway and mysql2 client memory for authentication. It is not persisted, logged, placed in a URL, or retained for reconnect.

Does my SSH private key leave my machine?

No. For a connection you configure, the selected key file and passphrase stay in current-tab browser memory on your machine. The gateway receives the derived public key and asks the browser to sign a bounded SSH authentication challenge. Browser code validates the username, service, method, algorithm, and public key before signing; only the signature returns. The gateway remains trusted to bind the opaque SSH session identifier to the selected host. The separate Real demo can use its own deployment key held only in a Kubernetes Secret and the gateway; that key never enters your browser.

How are the lightweight and full hosted demos different?

The lightweight explorer has two choices: Open real demo requires fresh Turnstile and exercises the bounded read-only gateway with fixed server-side credentials, while Open sample data is a local in-browser simulation. The Adminer, phpMyAdmin, DbGate, CloudBeaver, and MySQL Shell GUI images below it open separate full community tools hosted on isolated server instances. Those available links all use the dedicated read-only Sakila dataset and must not receive private data.

Do phpMyAdmin and Adminer support SSH tunnels?

Yes. The private-instance launcher at mysql.odmin.biz can connect phpMyAdmin and Adminer through an SSH tunnel, which is useful when shared hosting or a firewall blocks direct remote MySQL access. It verifies the SSH forwarding route and database login before creating the isolated instance. The public Sakila demos use their fixed operator-configured connections instead.

Why does this use a gateway?

Browsers cannot speak the raw TCP protocol used by MySQL. The opt-in Node gateway provides that narrow bridge and exposes only the explorer's structured read operations. Use it as an occasional fallback when a normal trusted client is unavailable.

Why is Turnstile required?

The connection originates from the odmin.biz Kubernetes gateway rather than your device IP. Fresh verification is required for every connection attempt to limit anonymous abuse without registration.

How long does a MySQL session last?

At most one hour, or fifteen minutes when idle. After either limit the database connection and in-memory session state are cleared, and reconnecting requires a fresh Turnstile challenge.

Can a link prefill MySQL connection fields?

Yes. Append a #mysql? fragment to https://odmin.biz/tools/mysql-client. It may contain route, host, port, username, and database; route=ssh may also contain ssh=username@host, configurable sshPort, and an optional sshHostKeySha256 pin. The browser removes it immediately after parsing. It rejects passwords, private keys, passphrases, TLS state, consent, and Turnstile tokens, and never connects automatically.

Can I connect by IP or use a private CA?

A public IPv4 or IPv6 literal is accepted, and verified TLS may use an expected server name when its publicly trusted certificate identity differs from that address. Custom CA connections are not implemented. Explicit unverified TLS and plaintext modes are available only after acknowledging their warning on every attempt.

What do the unsafe transport modes expose?

They do not weaken the browser-to-mysql2.odmin.biz connection, which always uses authenticated WSS/TLS. They apply only from the odmin.biz MySQL gateway to the selected MySQL server. On that leg, unverified TLS encrypts traffic but does not prove which server answered; plaintext also exposes the authentication exchange, metadata, definitions, and rows.

What does a MySQL connection error mean?

The sanitized message identifies the failed stage without exposing raw server details: browser-to-gateway availability, gateway-to-selected-host reachability, MySQL handshake, TLS availability, verified-certificate trust or identity, a server requirement for secure transport, account or database access, or a connection limit. Transport-mode errors affect only the gateway-to-selected-server leg.

Can this client change data or run arbitrary SQL?

No. Its protocol has no mutation or raw SQL operation, and the gateway sets the session default transaction mode to read-only before serving reads. Use a dedicated read-only MySQL account as the separate database authorization boundary.

How can I connect to a private MySQL server?

Enable Connect through SSH tunnel, enter the public bastion as username@host with its configurable SSH port, browse to a supported Ed25519 or RSA private key, and enter the MySQL host as seen from that SSH server. A host-key pin is optional: supply a separately verified SHA-256 fingerprint when available, or confirm the observed fingerprint for that attempt. The gateway opens one MySQL-only forwarding channel and exposes no SSH shell, command, SFTP, or general proxy.

What do the connection test buttons do?

Test SSH tunnel authenticates and opens only the exact entered MySQL forwarding channel, then closes it without sending a MySQL payload or opening an SSH shell/session channel. Test database connection performs the normal selected transport, read-only session initialization, and initial metadata read, then closes. Both require fresh Turnstile and retain the selected browser-only key for retry.

Can the connected explorer fill the browser window?

Yes. Use Full screen in the connected workbench title bar. Use Exit full screen or press Escape to return to the page.