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
Mở Form kết nối
Click New Connection từ màn hình Welcome hoặc File > New Connection
Chọn PostgreSQL
Chọn PostgreSQL từ danh sách loại cơ sở dữ liệu
Nhập thông tin kết nối
Điền host, port, username, password và tên database
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ường | Mô tả | Mặc định |
|---|
| Name | Tên định danh kết nối | - |
| Host | Hostname hoặc IP của server | localhost |
| Port | Cổng server PostgreSQL | 5432 |
| Username | Tên người dùng PostgreSQL | postgres |
| Password | Mật khẩu người dùng | - |
| Database | Tê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ị:
- Tất cả schemas có thể truy cập bởi người dùng của bạn
- Các bảng trong mỗi schema
- Thứ tự search path
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ểu | Hiển thị |
|---|
jsonb | JSON được format |
array | Ký hiệu array |
uuid | Chuỗi UUID |
inet | Địa chỉ IP |
timestamp with time zone | Timestamp được bản địa hóa |
interval | Khoảng thời gian dễ đọc |
bytea | Chỉ 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:
-
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
-
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 = '*'
-
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:
- Cho password auth: Đảm bảo
md5 hoặc scram-sha-256 được đặt
- Cho phát triển cục bộ: Sử dụng
trust (không cần mật khẩu)
- 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:
Permission Denied
Triệu chứng: “permission denied for table” hoặc “permission denied for schema”
Giải pháp:
-
Kiểm tra quyền hiện tại:
SELECT * FROM information_schema.role_table_grants
WHERE grantee = 'username';
-
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ế độ SSL | PostgreSQL sslmode | Mô tả |
|---|
| Disabled | disable | Không mã hóa SSL |
| Preferred | prefer | Sử dụng SSL nếu có sẵn, quay lại không mã hóa nếu không |
| Required | require | Yêu cầu SSL, nhưng không xác minh chứng chỉ |
| Verify CA | verify-ca | Yêu cầu SSL và xác minh chứng chỉ server với CA |
| Verify Identity | verify-full | Yêu cầu SSL, xác minh CA và xác minh hostname server |
Đối với chế độ Verify CA và Verify 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:
| Extension | Hỗ trợ |
|---|
postgis | Hiển thị kiểu geometry/geography |
pg_trgm | Hỗ trợ truy vấn đầy đủ |
uuid-ossp | Hiển thị UUID |
hstore | Hiển thị key-value |
ltree | Hiể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:
- Luôn sử dụng
LIMIT trong truy vấn khám phá
- Tạo indexes phù hợp
- Sử dụng phân trang trong data grid
Khác biệt với MySQL
Nếu bạn đến từ MySQL:
| MySQL | PostgreSQL |
|---|
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_INCREMENT | SERIAL hoặc GENERATED AS IDENTITY |
LIMIT x, y | LIMIT y OFFSET x |
| Backtick quotes | Double quotes cho identifiers |
Bước tiếp theo