An SSH tunnel reaches a database that only a jump host can talk to. DbSchema connects to the SSH server, and the SSH server connects to the database. Use it when the database should stay private and only a bastion is exposed.
A tunnel is a named configuration, stored once and reused. Several connections through the same bastion share one entry.
Open the Advanced tab of the Connection Dialog and pick a Configuration, or click the pencil to manage them.
Fill in the Name, the Host and Port of the SSH server, then choose how to authenticate:
.ppk format, and its passphrase.ssh-agent on Linux and macOS or Pageant on Windows, so DbSchema never sees the private key.Test Tunnel checks the SSH server before you connect.
Set the database host and port on the Connection tab to the address as seen from the SSH host — often localhost, when the database runs on the SSH server itself. The local port DbSchema forwards is set in Edit → Settings → Network → SSH.
A proxy applies to everything DbSchema does online: JDBC driver downloads, update checks, licensing, AI, Git and bug reports.
Open Edit → Settings → Network → Proxy. The System Proxy list holds the proxy in use.
Proxies are named configurations, like SSH tunnels. Click the pencil to edit them.
A configuration works one of two ways:
Tick Proxy authentication when the proxy asks for a login and password.
One proxy serves all protocols.
Automatic detection and PAC files carry no credentials. If your SOCKS proxy asks for a login, configure it manually — a detected one has nowhere to hold the login, and the proxy answers as though the password were wrong.
No proxy for lists the hosts DbSchema reaches directly. Write one pattern per line. Internal database servers usually belong here, so their traffic never leaves your network.
| Pattern | Matches |
|---|---|
example.com, .example.com | that domain and any subdomain of it — never notexample.com |
*.example.com | subdomains of example.com, but not example.com itself |
db*.example.* | * stands for any characters, dots included, anywhere in the pattern |
* | every host |
<local> | any host whose name contains no dot and is not an IP address |
10.1.2.3, ::1 | that address, however it is written |
10.0.0.0/8, fd00::/8 | an address inside that block |
any of the above, plus :8080 | the same, but only for connections to that port |
Matching ignores letter case. An address pattern matches only a target that is already an IP address: testing a host name would mean resolving it locally, which defeats the remote DNS of a SOCKS proxy.
DbSchema validates TLS certificates on all of its HTTP traffic. A proxy that inspects TLS replaces the certificate of every site with one of its own, signed by a company certificate authority. Unless DbSchema trusts that authority, the connection fails.
Open Edit → Settings → Network → SSL Certificates.
Custom Trust combines any of three sources:
Trust All Certificates accepts every server certificate. It also accepts an attacker's, so keep it for a short diagnosis rather than for daily use.
Changing the trust settings takes effect after you restart DbSchema.
The firewall on the database server may block incoming TCP/IP connections. You need to open the port used by your database:
330654321433152127017If your database was configured to use a non-default port, substitute that value in the commands below.
Open Command Prompt as Administrator and run (replace 3306 with your port):
netsh advfirewall firewall add rule name="DatabasePort" dir=in action=allow protocol=TCP localport=3306
3306)Allow MySQL 3306 InboundOn macOS, the built-in Application Firewall usually controls app-level access rather than raw database ports. For remote databases, the safer and simpler option is often to use an SSH tunnel from DbSchema instead of opening the database port broadly.
If you must expose a local database service, configure the database to listen on the correct interface, then review any host firewall or packet-filter rules that apply in your environment.
Choose the firewall tool used by your distribution.
sudo ufw allow 3306/tcp
sudo ufw reload
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo service iptables save
Replace 3306 with the port number for your database.
If DbSchema still cannot connect after you open the firewall, check these in order:
For a download or update that fails rather than a database connection, run check network <url> in DbSchemaCLI. It prints the proxy and certificate trust in use, requests the URL with them, and explains what went wrong.
bind-address in MySQL, listen_addresses in PostgreSQL).Use an SSH tunnel when the database should remain private and only a secure jump host is exposed.
The default ports are PostgreSQL 5432, MySQL 3306, and MongoDB 27017, unless your installation uses a custom port.
The most common causes are wrong host/port settings, the database listening only on localhost, missing user privileges, or a separate cloud firewall/security group still blocking traffic.
A proxy that inspects TLS presents its own certificate instead of the site's. Add your company certificate authority under SSL Certificates, then restart DbSchema.
It applies to every connection that asks Java for a proxy, which includes the JDBC drivers. A driver that opens its own sockets ignores it; for a database that is meant to stay private, use an SSH tunnel.