Hướng Dẫn DBeaver: Quản Lý PostgreSQL, MySQL và SQL Server từ Một Giao Diện Duy Nhất

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

Lúc 2 giờ sáng. Một câu query chạy ổn định suốt nhiều tháng bỗng dưng lock cứng một bảng production. Bạn có một terminal đang mở psql, MySQL Workbench ở tab khác, và đang cố đối chiếu dữ liệu giữa hai database khác nhau để tìm ra chỗ nào bị lệch. Chỉ riêng việc phải chuyển qua lại giữa các công cụ đã đủ kiệt sức rồi — và vào giờ đó, còn nguy hiểm nữa.

Tôi đã từng ở trong tình huống đó. Làm việc với MySQL, PostgreSQL và MongoDB trên các dự án khác nhau, mỗi database có điểm mạnh riêng — nhưng chi phí tooling khi phải nhảy qua lại giữa chúng là một vấn đề thực sự. Chính điều đó đã thúc đẩy tôi quản lý mọi thứ qua DBeaver, và nó đã thay đổi cách tôi làm việc cả lúc 2 giờ sáng lẫn 2 giờ chiều.

So Sánh Cách Tiếp Cận: Tool Riêng Lẻ vs. GUI Thống Nhất

Hầu hết developer bắt đầu với cách tiếp cận “mỗi database một tool”:

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

Cách này hoạt động tốt nếu bạn chỉ dùng một loại database trong mỗi dự án. Nhưng thực tế backend phần lớn không chiều như vậy. Bạn sẽ gặp database MySQL cũ nằm cạnh setup PostgreSQL mới, hoặc đang migrate dữ liệu từ SQL Server sang Postgres — và bỗng nhiên cần mở bốn ứng dụng khác nhau cùng lúc.

Lựa chọn thay thế là một GUI thống nhất: một ứng dụng xử lý tất cả. DBeaver, DataGrip và TablePlus đi theo hướng này. DBeaver và DataGrip dùng JDBC driver bên dưới; TablePlus trên macOS dùng native client library thay thế.

Sự khác biệt thể hiện rõ khi mọi thứ trở nên tệ. Mở một kết nối mới trên giao diện quen thuộc chỉ mất mười giây. Còn tìm icon MySQL Workbench trên taskbar lộn xộn lúc 2 giờ sáng lại là chuyện hoàn toàn khác.

Ưu và Nhược Điểm: DBeaver vs. Các Lựa Chọn Khác

DBeaver Community Edition (Miễn Phí)

Ưu điểm:

  • Miễn phí và mã nguồn mở — không tốn phí license cho team 10 người
  • Đa nền tảng: Linux, macOS, Windows với hành vi giống hệt nhau
  • Hỗ trợ 80+ database qua JDBC driver — PostgreSQL, MySQL, SQL Server, SQLite, MongoDB, Redis và nhiều hơn nữa
  • Trình xem sơ đồ ER tích hợp — thực sự hữu ích khi bạn tiếp nhận schema cũ không có tài liệu
  • SQL editor với tự động hoàn thành, syntax highlighting và visualization cho execution plan
  • Export dữ liệu sang CSV, JSON, SQL, Excel mà không cần mua thêm add-on

Nhược điểm:

  • Dựa trên Java nên nặng RAM hơn các giải pháp native — kỳ vọng sử dụng 300–600MB RAM
  • UI trông lỗi thời hơn so với TablePlus hay DataGrip
  • Lần khởi động đầu tiên sau khi cài JDBC driver mới có thể chậm
  • Các tính năng nâng cao như tích hợp Git và sinh dữ liệu giả yêu cầu DBeaver PRO

DataGrip (JetBrains, Trả Phí)

DataGrip có khả năng hiểu code mạnh hơn và tích hợp IDE chặt chẽ hơn nếu bạn đã trong hệ sinh thái JetBrains. Các công cụ SQL refactoring rõ ràng sắc bén hơn. Tuy nhiên ở mức $229/năm/người dùng, khó thuyết phục — DBeaver xử lý 90% công việc hàng ngày tương tự mà không tốn đồng nào.

TablePlus (macOS/Windows, Freemium)

Nhanh, cảm giác native, UI tối giản. Tuyệt nếu bạn dùng macOS và chủ yếu chạy query đọc dữ liệu. Gói miễn phí giới hạn hai tab mở và không có bộ lọc database, điều này nhanh chóng gây bất tiện. Phiên bản trả phí là $89 một lần — hợp lý, nhưng giới hạn tab khiến việc đánh giá đầy đủ trước khi mua trở nên khó khăn.

Kết luận

Nếu bạn thường xuyên làm việc qua lại giữa PostgreSQL, MySQL và SQL Server, DBeaver Community đạt được sự cân bằng phù hợp. Miễn phí, chạy trên mọi nền tảng, và khi đã quen với các phím tắt, nó biến mất vào nền — đó chính xác là những gì một công cụ database nên làm.

Hướng Dẫn Cài Đặt

Trước khi kết nối database đầu tiên, một vài quyết định cấu hình sẽ giúp bạn tránh đau đầu về sau.

Cài Đặt DBeaver

Trên Ubuntu/Debian (Ubuntu 22.04+ dùng định dạng keyring hiện đại):

# Thêm repo DBeaver và cài đặt
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

Trên macOS với Homebrew:

brew install --cask dbeaver-community

Trên Windows:

winget install dbeaver.dbeaver

Tổ chức kết nối bằng thư mục

Panel “Database Navigator” mặc định nhanh chóng trở nên lộn xộn khi bạn có hơn năm kết nối. Tạo cấu trúc thư mục ánh xạ theo môi trường của bạn:

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

Click chuột phải trong Database Navigator → “Create” → “Folder” để tạo cấu trúc này. Sau đó đặt màu đỏ cho các kết nối production — DBeaver cho phép gán màu viền cho từng kết nối, hiển thị trong tab SQL editor. Khi bạn chỉ còn ngủ được bốn tiếng, cái viền đỏ đó là thứ ngăn bạn chạy lệnh DELETE trên prod thay vì staging.

Tắt auto-commit trên kết nối đọc production

Các kết nối đọc production nên tắt auto-commit. Mọi lệnh UPDATE hay DELETE vô ý sẽ không được commit cho đến khi bạn xác nhận rõ ràng. Vào: Edit Connection → Connection Settings → bỏ chọn “Auto-commit”. Bạn sẽ tự cảm ơn mình sau.

Hướng Dẫn Triển Khai: Kết Nối và Làm Việc Xuyên Suốt Các Database

Kết Nối với PostgreSQL

New Connection → PostgreSQL. DBeaver sẽ nhắc tải JDBC driver trong lần đầu sử dụng — hãy chấp nhận. Sau đó điền thông tin kết nối:

Host: your-postgres-host
Port: 5432
Database: your_db_name
Username: your_user
Password: (lưu trong encrypted vault của DBeaver)

Các database production nằm sau bastion host không cần terminal riêng để tạo tunnel. DBeaver xử lý điều này trực tiếp:

# Trong tab SSH của dialog kết nối:
Host/IP: your-bastion-server.com
Port: 22
Username: ubuntu
Authentication: Public Key
Private key: ~/.ssh/your-key.pem

# DBeaver quản lý tunnel — không cần terminal riêng

Kết Nối với MySQL

Quy trình tương tự — New Connection → MySQL. Một vấn đề phổ biến với MySQL 8.x: kết nối từ client cũ hơn có thể gây lỗi xung đột authentication plugin. Nếu DBeaver không kết nối được, chạy lệnh này trên MySQL server:

-- Sửa lỗi xung đột authentication plugin
ALTER USER 'your_user'@'%'
  IDENTIFIED WITH mysql_native_password
  BY 'your_password';
FLUSH PRIVILEGES;

Hoặc thêm các thuộc tính này trong tab “Driver Properties” của DBeaver:

allowPublicKeyRetrieval = true
useSSL = false

Kết Nối với SQL Server

New Connection → SQL Server. Dùng Microsoft JDBC driver (DBeaver đề nghị tải về). SQL Server chạy trong Docker — phổ biến trong môi trường dev local — kết nối như sau:

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

Thích Windows Authentication hơn SQL Auth? Thêm các thông số này vào Driver Properties:

integratedSecurity = true
authenticationScheme = nativeAuthentication

Query xuyên suốt các database song song

Khi cả ba kết nối đều active, mở các tab SQL editor riêng biệt cho mỗi database. DBeaver giữ kết nối database active gắn với từng tab — bộ chọn kết nối ở đầu mỗi editor cho phép bạn chuyển schema context mà không cần đóng bất kỳ thứ gì.

Trong một sự cố khi cần so sánh dữ liệu giữa MySQL source và PostgreSQL destination, tôi mở ba tab editor cạnh nhau. Tôi ghim từng tab để tránh đóng nhầm. Sau đó dùng tính năng so sánh result set của DBeaver — click chuột phải vào kết quả → “Compare with Clipboard” — để diff đầu ra trực tiếp. Thử làm điều đó trên ba ứng dụng riêng biệt xem sao.

Export và di chuyển dữ liệu giữa các database

Click chuột phải vào bất kỳ bảng nào → “Export Data”. Chọn “Database Table” làm target export, chọn kết nối database khác, và DBeaver xử lý việc ánh xạ kiểu dữ liệu cơ bản giữa các loại database. Di chuyển một bảng từ MySQL sang PostgreSQL trông như thế này:

1. Click chuột phải vào bảng MySQL nguồn → Export Data
2. Chọn Target: Database Table
3. Chọn kết nối PostgreSQL của bạn làm đích
4. Kiểm tra ánh xạ kiểu cột (DBeaver tự ánh xạ hầu hết các kiểu chuẩn)
5. Xem trước 200 hàng đầu → Bắt đầu transfer

Cách này không thay thế pg_dump hay các công cụ migration chuyên dụng cho công việc production với foreign key và sequence. Để di chuyển một bảng lookup trong quá trình phát triển, hoặc kiểm tra script migration ánh xạ cột đúng không, nó hoàn thành trong chưa đầy một phút.

Trực quan hóa schema không quen thuộc

Khi bạn tiếp nhận database cũ không có tài liệu — và người xây dựng nó đã nghỉ việc hai năm trước — click chuột phải vào bất kỳ schema nào trong DBeaver → “View Diagram”. Nó tự động tạo sơ đồ ER từ các mối quan hệ foreign key hiện có. Nó sẽ không bắt được các quan hệ được áp đặt trong code ứng dụng thay vì DB constraints. Nhưng như một cách 30 giây để định hướng, không có gì sánh bằng.

Một Số Điều Cần Biết Trước Khi Dùng Hàng Ngày

DBeaver lưu mật khẩu kết nối được mã hóa bằng master password. Mặc định là chuỗi rỗng — về mặt kỹ thuật có mã hóa, nhưng dễ dàng bị vượt qua. Đặt master password thực sự trước khi lưu bất kỳ credential production nào: Window → Preferences → General → Security → Master Password.

Thêm một điều nữa: sau các bản cập nhật phiên bản DBeaver lớn, hãy kiểm tra JDBC driver vẫn còn nguyên vẹn. Đôi khi một bản cập nhật lớn reset cấu hình driver và bạn sẽ gặp lỗi “Class not found” khó hiểu trên một kết nối hoạt động tốt hôm qua. Sửa qua Database → Driver Manager → tìm driver bị ảnh hưởng → Download/Update.

Không có gì thần kỳ ở đây cả. Nhưng sau ba tiếng debug sự không nhất quán dữ liệu trải rộng qua PostgreSQL, MySQL và SQL Server, thiết lập này có giá trị. Một công cụ bạn nắm rõ trong tay. Các kết nối được tổ chức, phân màu theo môi trường, SSH tunnel đã cấu hình sẵn. Đó là sự khác biệt giữa giải quyết xong trước khi mặt trời mọc và vẫn còn nhìn chằm chằm vào các cửa sổ riêng lẻ khi đồng nghiệp xuất hiện.

Share: