Chuyển tới nội dung chính

🐘 Cài Đặt PostgreSQL

🐧 Cài Đặt trên Ubuntu

1. 📦 Thêm Repository PostgreSQL

# Cài đặt các gói phụ thuộc
sudo apt install wget ca-certificates

# Thêm PostgreSQL repository key
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/postgresql.asc

# Thêm PostgreSQL repository
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

# Cập nhật package list
sudo apt update

2. 💿 Cài Đặt PostgreSQL

Cài đặt phiên bản cụ thể

# PostgreSQL 12
sudo apt install postgresql-12 postgresql-contrib

# PostgreSQL 13
sudo apt install postgresql-13 postgresql-contrib

# PostgreSQL 15
sudo apt install postgresql-15 postgresql-contrib

3. 🔄 Quản Lý Service

# Kiểm tra status
sudo systemctl status postgresql

# Xem các cluster đang chạy
sudo systemctl list-units --type=service | grep postgresql

# Dừng một phiên bản cụ thể
sudo systemctl stop postgresql@13-main

# Khóa cập nhật tự động
sudo apt-mark hold postgresql-12 postgresql-contrib

⚙️ Cấu Hình Cơ Bản

1. 📄 File Cấu Hình

# Backup file cấu hình
sudo cp /etc/postgresql/12/main/postgresql.conf /etc/postgresql/12/main/postgresql.conf.backup

# Chỉnh sửa cấu hình
sudo vi /etc/postgresql/12/main/postgresql.conf

Các thông số quan trọng:

# Network
listen_addresses = '*'
port = 5432

# Memory
shared_buffers = 128MB
work_mem = 4MB

# Logging
log_destination = 'stderr'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
mẹo

Đọc thêm hướng dẫn Tinh Chỉnh PostgreSQL để tạo cấu hình tối ưu.

2. 🔒 Cấu Hình Xác Thực

# Chỉnh sửa pg_hba.conf
sudo vi /etc/postgresql/12/main/pg_hba.conf

Thêm các rule:

# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5

# IPv6 local connections:
host all all ::1/128 md5

3. 🔄 Khởi Động Lại Service

sudo systemctl restart postgresql

📊 Quản Lý Database

1. 🔑 Truy Cập PostgreSQL

# Đăng nhập với user postgres
sudo -u postgres psql

# Hoặc sử dụng psql trực tiếp
psql -U postgres -h localhost

2. 👥 Tạo User và Database

-- Tạo user mới
CREATE USER myuser WITH PASSWORD 'mypassword';

-- Tạo database
CREATE DATABASE mydb;

-- Cấp quyền
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

3. 💾 Backup và Restore

# Backup database
pg_dump dbname > backup.sql

# Restore database
psql dbname < backup.sql

🛡️ Bảo Mật

1. 🔑 Đổi Mật Khẩu User postgres

ALTER USER postgres WITH PASSWORD 'new_password';

2. 🚫 Giới Hạn Kết Nối

Trong postgresql.conf:

max_connections = 100

📊 Monitoring

1. 📋 Kiểm Tra Logs

# Xem logs PostgreSQL
sudo tail -f /var/log/postgresql/postgresql-12-main.log

2. 👥 Kiểm Tra Kết Nối

-- Xem các kết nối hiện tại
SELECT * FROM pg_stat_activity;

🔧 Xử Lý Sự Cố

1. ⚠️ Các Lỗi Thường Gặp

  1. Không thể kết nối

    • Kiểm tra status service
    • Xác nhận cấu hình listen_addresses
    • Kiểm tra pg_hba.conf
  2. Authentication failed

    • Kiểm tra phương thức xác thực trong pg_hba.conf
    • Xác nhận mật khẩu đúng
    • Kiểm tra quyền user

2. ⚡ Performance Issues

-- Kiểm tra các query đang chạy lâu
SELECT pid, now() - pg_stat_activity.query_start AS duration, query
FROM pg_stat_activity
WHERE pg_stat_activity.query != ''::text
AND state != 'idle'
AND now() - pg_stat_activity.query_start > interval '5 minutes';

📚 Tài Liệu Tham Khảo