Cài đặt PostgreSQL từ Repository Chính thức
Bước đầu tiên là thêm repository chính thức của PostgreSQL (PGDG) vào hệ thống Ubuntu 24.04 để đảm bảo chúng ta luôn nhận được phiên bản mới nhất và các bản vá bảo mật ngay lập tức.
Chúng ta cần cài đặt các gói phụ thuộc cần thiết cho việc quản lý key và source list trước khi import key.
sudo apt update && sudo apt install -y wget gnupg lsb-release
Hệ thống sẽ cập nhật danh sách gói và cài đặt wget, gnupg, lsb-release. Không có lỗi xảy ra.
Tiếp theo, thực hiện import GPG key của PostgreSQL để xác minh tính toàn vẹn của các gói phần mềm sắp tải về.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
Key được ghi vào thư mục trusted.gpg.d. Nếu thấy lỗi connection, hãy kiểm tra lại firewall hoặc proxy của server.
Cấu hình source list để chỉ định phiên bản PostgreSQL tương thích với Ubuntu 24.04 (Noble). Chúng ta sẽ dùng biến môi trường để tự động lấy tên phiên bản hệ điều hành.
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql.list
File cấu hình source được tạo tại /etc/apt/sources.list.d/postgresql.list với nội dung chỉ định repository cho Noble.
Cập nhật lại danh sách gói và cài đặt PostgreSQL phiên bản mới nhất cùng các công cụ cần thiết.
sudo apt update && sudo apt install -y postgresql postgresql-contrib postgresql-client
Cài đặt hoàn tất. Hệ thống sẽ hỏi bạn có muốn cài đặt các gói mới hay không, hãy trả lời 'Y' (Yes) nếu được hỏi.
Verify Cài đặt
Chạy lệnh sau để kiểm tra phiên bản PostgreSQL vừa cài đặt.
psql --version
Output hiển thị phiên bản PostgreSQL 17.x (hoặc cao hơn tùy thời điểm) và phiên bản client tương ứng.
Khởi động và Bảo mật Service PostgreSQL
Sau khi cài đặt, service PostgreSQL cần được khởi động và cấu hình để tự động chạy khi server khởi động lại (enable on boot).
Khởi động service PostgreSQL và kích hoạt tự động.
sudo systemctl enable --now postgresql
Service postgresql đã được enable và start. Trạng thái là active (running).
Kiểm tra trạng thái chi tiết của service để đảm bảo không có lỗi trong quá trình khởi động.
sudo systemctl status postgresql
Output hiển thị "Active: active (running)". Các dòng log gần nhất không chứa từ "error" hay "failed".
Cấu hình file pg_hba.conf để cho phép kết nối an toàn. Mặc định PostgreSQL 24.04 thường chỉ cho phép kết nối qua socket Unix local, nhưng để chuẩn bị cho pgvector và LlamaIndex (thường chạy trên container hoặc port TCP), ta cần mở port 5432.
Truy cập file cấu hình kết nối. Đường dẫn mặc định là /etc/postgresql/17/main/pg_hba.conf (số 17 có thể thay đổi tùy phiên bản).
sudo nano /etc/postgresql/17/main/pg_hba.conf
File mở ra trong trình soạn thảo nano.
Sửa nội dung file để cho phép kết nối từ localhost qua TCP/IP (host) thay vì chỉ Unix socket (local). Thêm dòng sau vào cuối file hoặc trước dòng reject cuối cùng.
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
File được lưu và đóng. Dòng mới cho phép kết nối qua 127.0.0.1 và IPv6 loopback với phương thức xác thực scram-sha-256 (bảo mật hơn md5 hoặc password).
Cấu hình file postgresql.conf để đảm bảo server lắng nghe kết nối trên localhost.
sudo nano /etc/postgresql/17/main/postgresql.conf
File mở ra. Tìm dòng listen_addresses và sửa thành "localhost".
listen_addresses = 'localhost'
File được lưu. Server sẽ chỉ lắng nghe trên giao diện mạng local.
Khởi động lại service PostgreSQL để áp dụng các thay đổi cấu hình vừa thực hiện.
sudo systemctl restart postgresql
Service restart thành công. Kiểm tra lại trạng thái bằng systemctl status postgresql.
Verify Cấu hình Bảo mật
Thử kết nối vào database mặc định qua giao thức TCP để xác nhận cấu hình pg_hba.conf đã.
psql -h 127.0.0.1 -U postgres
Hệ thống sẽ yêu cầu nhập password. Mặc định có thể là trống hoặc bạn cần thiết lập. Nếu kết nối thành công, prompt sẽ chuyển sang postgres=#.
Tạo User, Database và Cấu hình Quyền Truy cập
Trong môi trường production, tuyệt đối không sử dụng user "postgres" cho ứng dụng. Chúng ta cần tạo một user riêng cho AI application (ví dụ: user tên 'ai_app') và database riêng (ví dụ: 'ai_db').
Đăng nhập vào PostgreSQL bằng user postgres để thực hiện các lệnh quản trị. Nếu chưa đặt password cho postgres, hãy dùng sudo -i postgres.
sudo -i postgres
Bạn sẽ chuyển sang shell của user postgres. Sau đó gõ lệnh psql để vào CLI database.
psql
Prompt chuyển sang postgres=#.
Đặt password cho user postgres (nếu chưa có) để có thể kết nối qua TCP trong tương lai. Thay thế 'YourStrongPassword' bằng mật khẩu thực tế.
ALTER USER postgres WITH PASSWORD 'YourStrongPassword';
Output: ALTER ROLE. Password đã được cập nhật.
Tạo database mới cho ứng dụng AI.
CREATE DATABASE ai_db;
Output: CREATE DATABASE. Database ai_db đã được tạo.
Tạo user mới cho ứng dụng với quyền xác thực bằng mật khẩu (scram-sha-256).
CREATE USER ai_app WITH PASSWORD 'AiAppStrongPassword';
Output: CREATE ROLE. User ai_app đã được tạo.
Cấp quyền truy cập vào database ai_db cho user ai_app. Chúng ta cần quyền tạo bảng (CREATE) và quyền thao tác dữ liệu (USAGE).
GRANT ALL PRIVILEGES ON DATABASE ai_db TO ai_app;
Output: GRANT. User ai_app giờ có thể connect vào ai_db và tạo schema/table.
Thoát khỏi CLI PostgreSQL và shell postgres.
\q
Exit khỏi psql.
exit
Thoát khỏi shell postgres, quay lại user root hoặc user ban đầu.
Verify Quyền Truy cập
Kiểm tra quyền bằng cách đăng nhập vào database mới với user mới qua giao thức TCP.
psql -h 127.0.0.1 -U ai_app -d ai_db
Hệ thống yêu cầu nhập password 'AiAppStrongPassword'. Sau khi nhập đúng, prompt chuyển sang ai_db=>. Điều này xác nhận user và database đã được cấu hình chính xác và an toàn.
Điều hướng series:
Mục lục: Series: Triển khai Database AI với pgvector, LlamaIndex và Ubuntu 24.04
« Phần 1: Chuẩn bị môi trường Ubuntu 24.04 và công cụ cần thiết
Phần 3: Triển khai extension pgvector cho PostgreSQL »