Chuyển đến nội dung chính

Kết nối PostgreSQL

TablePro hỗ trợ đầy đủ cho PostgreSQL 12 và các phiên bản mới hơn. PostgreSQL nổi tiếng với các tính năng tiên tiến, tuân thủ tiêu chuẩn và khả năng mở rộng.

Thiết lập nhanh

1

Mở Form kết nối

Click New Connection từ màn hình Welcome hoặc File > New Connection
2

Chọn PostgreSQL

Chọn PostgreSQL từ danh sách loại cơ sở dữ liệu
3

Nhập thông tin kết nối

Điền host, port, username, password và tên database
4

Kiểm tra và kết nối

Click Test Connection, sau đó Create

Cài đặt kết nối

Các trường bắt buộc

TrườngMô tảMặc định
NameTên định danh kết nối-
HostHostname hoặc IP của serverlocalhost
PortCổng server PostgreSQL5432
UsernameTên người dùng PostgreSQLpostgres
PasswordMật khẩu người dùng-
DatabaseTên database để kết nối-
Khác với MySQL, PostgreSQL yêu cầu chỉ định tên database để kết nối.

Các cấu hình ví dụ

Server phát triển cục bộ

Name:     Local PostgreSQL
Host:     localhost
Port:     5432
Username: postgres
Password: (mật khẩu của bạn)
Database: postgres

Docker PostgreSQL Container

Name:     Docker Postgres
Host:     localhost
Port:     5432 (hoặc cổng đã map)
Username: postgres
Password: (mật khẩu từ POSTGRES_PASSWORD)
Database: postgres

Homebrew PostgreSQL

Name:     Homebrew Postgres
Host:     localhost
Port:     5432
Username: (tên người dùng macOS của bạn)
Password: (để trống cho local trust auth)
Database: postgres
Homebrew PostgreSQL thường sử dụng xác thực “trust” cho kết nối cục bộ, nghĩa là không cần mật khẩu.

Remote Server

Name:     Production DB
Host:     db.example.com
Port:     5432
Username: app_user
Password: (mật khẩu an toàn)
Database: myapp_production

Cloud Databases

Amazon RDS

Name:     AWS RDS Postgres
Host:     mydb.abc123.us-east-1.rds.amazonaws.com
Port:     5432
Username: postgres
Password: (mật khẩu RDS của bạn)
Database: postgres

Heroku Postgres

Name:     Heroku Postgres
Host:     ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com
Port:     5432
Username: (từ DATABASE_URL)
Password: (từ DATABASE_URL)
Database: (từ DATABASE_URL)
Phân tích DATABASE_URL của Heroku để trích xuất host, port, username, password và tên database.

Tính năng

Hỗ trợ Schema

PostgreSQL tổ chức các bảng thành schemas. TablePro hiển thị:
  1. Tất cả schemas có thể truy cập bởi người dùng của bạn
  2. Các bảng trong mỗi schema
  3. Thứ tự search path
Schema browser

Thông tin bảng

Cho mỗi bảng, TablePro hiển thị:
  • Structure: Các cột với kiểu dữ liệu đặc thù PostgreSQL
  • Indexes: Bao gồm partial và expression indexes
  • Constraints: Primary keys, foreign keys, check constraints
  • DDL: Câu lệnh CREATE TABLE

Thực thi truy vấn

Thực thi truy vấn với hỗ trợ đầy đủ cú pháp PostgreSQL:
-- Truy vấn JSONB
SELECT data->>'name' as name, data->'address'->>'city' as city
FROM customers
WHERE data @> '{"active": true}'::jsonb;

-- Thao tác Array
SELECT name, tags
FROM products
WHERE 'electronics' = ANY(tags);

-- Window functions
SELECT
    department,
    employee,
    salary,
    salary - LAG(salary) OVER (PARTITION BY department ORDER BY hire_date) as salary_change
FROM employees;

-- CTEs với RETURNING
WITH inserted AS (
    INSERT INTO orders (customer_id, total)
    VALUES (1, 99.99)
    RETURNING *
)
SELECT * FROM inserted;

-- Full-text search
SELECT title, ts_rank(search_vector, query) as rank
FROM articles, to_tsquery('english', 'database & performance') query
WHERE search_vector @@ query
ORDER BY rank DESC;

Các kiểu dữ liệu đặc thù PostgreSQL

TablePro hiển thị đúng hệ thống kiểu phong phú của PostgreSQL:
KiểuHiển thị
jsonbJSON được format
arrayKý hiệu array
uuidChuỗi UUID
inetĐịa chỉ IP
timestamp with time zoneTimestamp được bản địa hóa
intervalKhoảng thời gian dễ đọc
byteaChỉ thị dữ liệu binary

Khắc phục sự cố

Connection Refused

Triệu chứng: “Connection refused” hoặc “could not connect to server” Nguyên nhân và Giải pháp:
  1. PostgreSQL server không chạy
    # Kiểm tra PostgreSQL có đang chạy không
    pg_isready -h localhost -p 5432
    
    # Khởi động PostgreSQL (macOS với Homebrew)
    brew services start postgresql@16
    
  2. PostgreSQL không chấp nhận kết nối
    • Kiểm tra listen_addresses trong postgresql.conf
    • Cho kết nối remote, đặt listen_addresses = '*'
  3. Firewall chặn kết nối
    • Kiểm tra cài đặt firewall macOS
    • Xác minh cổng 5432 có thể truy cập

Authentication Failed

Triệu chứng: “password authentication failed” hoặc “Peer authentication failed” Hiểu về pg_hba.conf: PostgreSQL sử dụng pg_hba.conf để kiểm soát xác thực. Các entry phổ biến:
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     trust
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
Giải pháp:
  1. Cho password auth: Đảm bảo md5 hoặc scram-sha-256 được đặt
  2. Cho phát triển cục bộ: Sử dụng trust (không cần mật khẩu)
  3. Reset password nếu quên:
    ALTER USER postgres WITH PASSWORD 'newpassword';
    

Database Does Not Exist

Triệu chứng: “database ‘xyz’ does not exist” Giải pháp: Kết nối đến database hiện có trước (thường là postgres), sau đó tạo database của bạn:
CREATE DATABASE myapp;

Permission Denied

Triệu chứng: “permission denied for table” hoặc “permission denied for schema” Giải pháp:
  1. Kiểm tra quyền hiện tại:
    SELECT * FROM information_schema.role_table_grants
    WHERE grantee = 'username';
    
  2. Cấp quyền cần thiết:
    GRANT ALL ON DATABASE mydb TO username;
    GRANT ALL ON SCHEMA public TO username;
    GRANT ALL ON ALL TABLES IN SCHEMA public TO username;
    

Kết nối SSL/TLS

TablePro hỗ trợ mã hóa SSL/TLS cho kết nối PostgreSQL. Cấu hình SSL trong phần SSL/TLS của biểu mẫu kết nối.
Chế độ SSLPostgreSQL sslmodeMô tả
DisableddisableKhông mã hóa SSL
PreferredpreferSử dụng SSL nếu có sẵn, quay lại không mã hóa nếu không
RequiredrequireYêu cầu SSL, nhưng không xác minh chứng chỉ
Verify CAverify-caYêu cầu SSL và xác minh chứng chỉ server với CA
Verify Identityverify-fullYêu cầu SSL, xác minh CA và xác minh hostname server
Đối với chế độ Verify CAVerify Identity, cung cấp đường dẫn đến chứng chỉ CA (root certificate). Bạn cũng có thể cung cấp file chứng chỉ client và khóa tùy chọn để xác thực TLS hai chiều.
Nhà cung cấp cloud như AWS RDS, Heroku và Supabase thường yêu cầu SSL. Sử dụng chế độ Required hoặc Verify CA tùy theo nhu cầu bảo mật.
Nếu bạn không muốn cấu hình chứng chỉ SSL, SSH tunneling là phương án thay thế mã hóa toàn bộ traffic qua đường hầm SSH.

PostgreSQL Extensions

TablePro hoạt động với database sử dụng các extension phổ biến:
ExtensionHỗ trợ
postgisHiển thị kiểu geometry/geography
pg_trgmHỗ trợ truy vấn đầy đủ
uuid-osspHiển thị UUID
hstoreHiển thị key-value
ltreeHiển thị tree path
Để xem các extension đã cài đặt:
SELECT * FROM pg_extension;

Mẹo hiệu năng

Phân tích truy vấn

Sử dụng EXPLAIN ANALYZE để hiểu hiệu năng truy vấn:
EXPLAIN ANALYZE
SELECT * FROM users WHERE email LIKE '%@example.com';

Giới hạn kết nối

PostgreSQL có giới hạn kết nối mặc định. Giám sát kết nối:
SELECT count(*) FROM pg_stat_activity;

Bảng lớn

Cho bảng có hàng triệu dòng:
  1. Luôn sử dụng LIMIT trong truy vấn khám phá
  2. Tạo indexes phù hợp
  3. Sử dụng phân trang trong data grid

Khác biệt với MySQL

Nếu bạn đến từ MySQL:
MySQLPostgreSQL
SHOW DATABASES\l hoặc query pg_database
SHOW TABLES\dt hoặc query information_schema.tables
DESCRIBE table\d table hoặc query information_schema.columns
AUTO_INCREMENTSERIAL hoặc GENERATED AS IDENTITY
LIMIT x, yLIMIT y OFFSET x
Backtick quotesDouble quotes cho identifiers

Bước tiếp theo