5. Cài đặt hệ quản trị cơ sở dữ liệu
Phần này sẽ cài đặt hệ quản trị cơ sở dữ liệu để lưu trữ thông tin cho dự án.
5.1 PostgreSQL
Bước 1. Cài đặt PostgreSQL
- Tải phần mềm: Truy cập trang chủ PostgreSQL (https://www.postgresql.org/) và tải bản cài đặt phù hợp với hệ điều hành bạn đang sử dụng (Windows/Linux/macOS)
- Thực hiện cài đặt như một chương trình bình thường
- Cấu hình ban đầu: Thiết lập mật khẩu cho tài khoản quản trị mặc định (tài khoản: postgres; mật khẩu: p@ssword1)
- Ghi nhớ cổng kết nối mặc định (thường là 5432)
- Sau khi cài đặt PostgreSQL thành công, sử dụng công cụ pgAdmin4 (được cài đặt tự động với quá trình cài đặt PostgreSQL) để đăng nhập vào hệ thống
Bước 2. Tạo Database cho dự án
(sử dụng pgAdmin4)
- Mở pgAdmin4 và đăng nhập với mật khẩu đã tạo ở bước cài đặt (postgres - p@ssword1)
- Chuột phải vào mục Databases -> chọn Create -> Database…
- Tại ô Database, nhập tên: ebook2latex_db
- Nhấn Save
Bước 3: Cấu hình chuỗi kết nối trong tập tin .env
Để ứng dụng Backend (FastAPI) có thể giao tiếp với cơ sở dữ liệu mà vẫn đảm bảo tính bảo mật, chúng ta lưu thông tin cấu hình trong tập tin môi trường.
- Trong thư mục gốc của dự án (Ebook2LateX), tạo thư mục backend
- Truy cập vào thư mục backend/
- Tạo một tập tin mới tên là .env (nếu chưa có)
- Thêm nội dung cấu hình chuỗi kết nối theo định dạng của SQLAlchemy như sau:
[.env]
# Định dạng: postgresql://[user]:[password]@[host]:[port]/[database_name]
DATABASE_URL=postgresql://postgres:mat_khau_cua_ban@localhost:5432/ebook2latex_db
Giải thích các thành phần của đoạn mã trên:
- postgres: Tên người dùng mặc định
- mat_khau_cua_ban: Thay bằng mật khẩu bạn đã thiết lập ở bước cài đặt
- localhost: Chạy trên máy cục bộ (hoặc db nếu bạn chạy trong Docker)
- 5432: Cổng mặc định của PostgreSQL
- ebook2latex_db: Tên cơ sở dữ liệu vừa tạo
Việc tách và lưu thông tin cấu hình ra tập tin .env giúp bạn dễ dàng thay đổi môi trường (từ máy cá nhân sang Docker hoặc Cloud) mà không cần sửa mã nguồn ứng dụng.
5.2 Bài tập và câu hỏi
Bài tập
Bài tập 5a. Thực hiện cài đặt các nội dung trong bài học.
Câu hỏi
Câu 5.1 Tại sao thông tin kết nối cơ sở dữ liệu nên được lưu trữ trong tập tin .env thay vì viết trực tiếp vào mã nguồn của ứng dụng Backend?
A. Để giúp cơ sở dữ liệu PostgreSQL chạy nhanh hơn
B. Để đảm bảo tính bảo mật và giúp dễ dàng thay đổi cấu hình khi chuyển đổi môi trường (như từ máy cá nhân lên Cloud) mà không cần sửa mã nguồn
C. Vì tập tin .env là nơi duy nhất mà công cụ pgAdmin4 có thể đọc được tên cơ sở dữ liệu
D. Để hệ điều hành Windows/Linux tự động cài đặt PostgreSQL khi ứng dụng khởi chạy
Câu 5.2 Trong chuỗi kết nối postgresql://postgres:p@ssword1@localhost:5432/ebook2latex_db, thành phần "5432" đóng vai trò gì?
A. Là mã định danh (ID) của tài khoản người dùng quản trị
B. Là mật khẩu truy cập vào hệ quản trị cơ sở dữ liệu
C. Là cổng kết nối (port) mặc định để ứng dụng giao tiếp với PostgreSQL
D. Là phiên bản của hệ quản trị cơ sở dữ liệu PostgreSQL đang sử dụng
Câu 5.3 Giả sử bạn đã cài đặt PostgreSQL với mật khẩu là 123456 và tạo một database tên là project_math. Bạn cần cấu hình tập tin .env trong thư mục backend như thế nào để ứng dụng kết nối đúng (giả sử các thông số khác để mặc định)?
A. DATABASE_URL=postgresql://admin:123456@localhost:5432/project_math
B. DATABASE_URL=postgresql://postgres:123456@localhost:5432/project_math
C. DATABASE_URL=postgresql://123456:postgres@localhost:5432/project_math
D. DATABASE_URL=postgresql://postgres:123456@localhost:8000/project_math
-----