DBeaver Guide: Manage PostgreSQL, MySQL, and SQL Server from One Interface

Database tutorial - IT technology blog
Database tutorial - IT technology blog

It’s 2 AM. A query that’s been running fine for months is suddenly locking up a production table. You’ve got one terminal with psql open, MySQL Workbench in another tab, and you’re trying to cross-reference data between two different databases to find out what diverged. The context switching alone is exhausting — and at that hour, it’s dangerous.

I’ve been there. Working across MySQL, PostgreSQL, and MongoDB on different projects, each database has real strengths — but the tooling overhead when you’re jumping between them is a genuine problem. That’s what pushed me to manage everything through DBeaver, and it changed how I work at both 2 AM and 2 PM.

Approach Comparison: Native Tools vs. Unified GUI

Most developers start with the “one tool per database” approach:

  • pgAdmin for PostgreSQL
  • MySQL Workbench for MySQL/MariaDB
  • SSMS (SQL Server Management Studio) for SQL Server
  • MongoDB Compass for MongoDB

This works fine if you only touch one database type per project. But most real-world backend work doesn’t cooperate. You’ll find a legacy MySQL database sitting next to a new PostgreSQL setup, or you’re migrating data from SQL Server to Postgres — and suddenly you need four different applications open at the same time.

The alternative is a unified GUI: one application that handles all of them. DBeaver, DataGrip, and TablePlus take this route. DBeaver and DataGrip use JDBC drivers under the hood; TablePlus on macOS uses native client libraries instead.

The difference matters when things go sideways. Opening a new connection in a familiar interface takes ten seconds. Finding the MySQL Workbench icon on a cluttered taskbar at 2 AM is something else entirely.

Pros and Cons: DBeaver vs. the Alternatives

DBeaver Community Edition (Free)

Pros:

  • Free and open source — no license cost on a 10-person team
  • Cross-platform: Linux, macOS, Windows with identical behavior
  • Supports 80+ databases via JDBC drivers — PostgreSQL, MySQL, SQL Server, SQLite, MongoDB, Redis, and more
  • Built-in ER diagram viewer — actually earns its keep when you inherit a legacy schema with no documentation
  • SQL editor with auto-completion, syntax highlighting, and execution plan visualization
  • Data export to CSV, JSON, SQL, Excel without buying add-ons

Cons:

  • Java-based, so heavier on memory than native alternatives — expect 300–600MB RAM usage
  • The UI feels dated compared to TablePlus or DataGrip
  • First launch after installing a new JDBC driver can be slow
  • Advanced features like Git integration and mock data generation require DBeaver PRO

DataGrip (JetBrains, Paid)

DataGrip has stronger code intelligence and tighter IDE integration if you’re already in the JetBrains ecosystem. The SQL refactoring tools are noticeably sharper. At $229/year per user, though, it’s a tough sell — DBeaver handles 90% of the same daily tasks at no cost.

TablePlus (macOS/Windows, Freemium)

Fast, native feel, minimal UI. Great if you’re on macOS and mostly doing read-only queries. The free tier limits you to two open tabs and no database filter, which becomes painful quickly. The paid version is $89 one-time — reasonable, but the tab restriction makes it awkward to properly evaluate before buying.

The verdict

If you’re regularly bouncing between PostgreSQL, MySQL, and SQL Server, DBeaver Community hits the right balance. It’s free, runs everywhere, and once you’ve internalized the shortcuts, it disappears into the background — which is exactly what a database tool should do.

Recommended Setup

Before connecting your first database, a few configuration decisions will save you pain later.

Install DBeaver

On Ubuntu/Debian (Ubuntu 22.04+ uses the modern keyring format):

# Add DBeaver repo and install
wget -O /usr/share/keyrings/dbeaver.gpg https://dbeaver.io/debs/dbeaver.gpg.key
echo "deb [signed-by=/usr/share/keyrings/dbeaver.gpg] https://dbeaver.io/debs/dbeaver-ce /" | sudo tee /etc/apt/sources.list.d/dbeaver.list
sudo apt update && sudo apt install dbeaver-ce

On macOS with Homebrew:

brew install --cask dbeaver-community

On Windows:

winget install dbeaver.dbeaver

Organize connections with folders

The default “Database Navigator” panel becomes a mess fast once you have more than five connections. Create a folder structure that maps to your environments:

📁 Production
   ├── 🐘 prod-postgres (PostgreSQL 15)
   ├── 🐬 legacy-mysql (MySQL 5.7)
   └── 🟥 analytics-sqlserver (SQL Server 2019)
📁 Staging
   └── 🐘 staging-postgres
📁 Local Dev
   ├── 🐘 localhost:5432
   └── 🐬 localhost:3306

Right-click in the Database Navigator → “Create” → “Folder” to build this out. Then color-code your production connections red — DBeaver lets you assign a border color per connection that shows up inside the SQL editor tab. When you’re running on four hours of sleep, that red border is what stops you from running a DELETE on prod instead of staging.

Disable auto-commit on production read connections

Production read connections should have auto-commit disabled. Any accidental UPDATE or DELETE won’t commit until you explicitly confirm. Go to: Edit Connection → Connection Settings → uncheck “Auto-commit”. You’ll thank yourself later.

Implementation Guide: Connecting and Working Across Databases

Connect to PostgreSQL

New Connection → PostgreSQL. DBeaver will prompt to download the JDBC driver on first use — accept it. Then fill in the connection details:

Host: your-postgres-host
Port: 5432
Database: your_db_name
Username: your_user
Password: (store in DBeaver's encrypted vault)

Production databases behind a bastion host don’t need a separate terminal for the tunnel. DBeaver handles it natively:

# In the SSH tab of the connection dialog:
Host/IP: your-bastion-server.com
Port: 22
Username: ubuntu
Authentication: Public Key
Private key: ~/.ssh/your-key.pem

# DBeaver manages the tunnel — no separate terminal needed

Connect to MySQL

Same flow — New Connection → MySQL. One common issue with MySQL 8.x: connecting from an older client can trigger an authentication plugin mismatch. If DBeaver fails to connect, run this on the MySQL server:

-- Fix authentication plugin mismatch
ALTER USER 'your_user'@'%'
  IDENTIFIED WITH mysql_native_password
  BY 'your_password';
FLUSH PRIVILEGES;

Or add these properties in DBeaver’s “Driver Properties” tab instead:

allowPublicKeyRetrieval = true
useSSL = false

Connect to SQL Server

New Connection → SQL Server. Use the Microsoft JDBC driver (DBeaver offers to download it). SQL Server running in Docker — common in local dev — connects like this:

Host: localhost
Port: 1433
Database: master
Username: sa
Password: YourStrong@Passw0rd

Prefer Windows Authentication over SQL Auth? Add these to Driver Properties:

integratedSecurity = true
authenticationScheme = nativeAuthentication

Query across databases in parallel

With all three connections active, open separate SQL editor tabs for each. DBeaver keeps the active database connection tied to each tab — the connection selector at the top of each editor lets you switch schema context without closing anything.

During an incident comparing data between a MySQL source and a PostgreSQL destination, I had three editor tabs open side by side. I pinned each one to prevent accidental closures. Then I used DBeaver’s result set comparison — right-click a result → “Compare with Clipboard” — to diff the outputs directly. Try doing that across three separate applications.

Export and move data between databases

Right-click any table → “Export Data”. Pick “Database Table” as the export target, select a different database connection, and DBeaver handles basic type mapping between database flavors. Moving a single table from MySQL to PostgreSQL looks like this:

1. Right-click the MySQL source table → Export Data
2. Choose Target: Database Table
3. Select your PostgreSQL connection as the destination
4. Review the column type mappings (DBeaver auto-maps most standard types)
5. Preview the first 200 rows → Start transfer

This won’t replace pg_dump or purpose-built migration tools for production work with foreign keys and sequences. For moving a lookup table during development, or verifying a migration script maps columns correctly, it’s done in under a minute.

Visualize an unfamiliar schema

When you inherit a legacy database with no documentation — and the person who built it left two years ago — right-click any schema in DBeaver → “View Diagram”. It generates an ER diagram from existing foreign key relationships automatically. It won’t catch relationships enforced in application code rather than DB constraints. But as a 30-second way to get your bearings, nothing else comes close.

A Few Things Worth Knowing Before You Rely on This Daily

DBeaver stores connection passwords encrypted with a master password. The default is an empty string — the encryption is technically there, but trivially bypassed. Set a real one before storing any production credentials: Window → Preferences → General → Security → Master Password.

One more: after major DBeaver version updates, verify your JDBC drivers are still intact. Occasionally a major update resets driver configurations and you’ll get a confusing “Class not found” error on a connection that worked yesterday. Fix it via Database → Driver Manager → find the affected driver → Download/Update.

Nothing here is magic. But three hours into debugging a data inconsistency that spans PostgreSQL, MySQL, and SQL Server, the setup pays off. One tool you know cold. Connections organized, color-coded by environment, SSH tunnels already configured. That’s the difference between solving it before sunrise and still staring at separate windows when your team shows up.

Share: