Sunday, January 19, 2025

Cài đặt PostgreSQL trên hệ điều hành Ubuntu

-

1. Tổng quan.

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, được phát triển từ dự án Berkeley Postgres vào những năm đầu của thập kỷ 1980. Nó được thiết kế để cung cấp tính năng đầy đủ và khả năng mở rộng, đồng thời duy trì tính đáng tin cậy và hiệu suất cao.

So sánh PostgreSQL với các hệ quản trị cơ sở dữ liệu thông dụng khác:

  • MySQL: PostgreSQL và MySQL đều là hệ quản trị cơ sở dữ liệu quan hệ phổ biến. Tuy nhiên, PostgreSQL có tính năng mạnh mẽ hơn với khả năng hỗ trợ kiểm soát nghiêm ngặt về tính toàn vẹn dữ liệu, hỗ trợ phức tạp hơn về truy vấn và các tính năng nâng cao như trình tự, chế độ xem, giao dịch điều khiển và truy cập đa người dùng.
  • Oracle: Oracle là một hệ quản trị cơ sở dữ liệu thương mại mạnh mẽ và phổ biến. So với Oracle, PostgreSQL cung cấp một lựa chọn mã nguồn mở và miễn phí với nhiều tính năng tương tự, nhưng giá thành thấp hơn. PostgreSQL có khả năng mở rộng và tùy chỉnh tốt, đồng thời hỗ trợ chuẩn SQL phong phú và chuẩn ACID (Atomicity, Consistency, Isolation, Durability).
  • MongoDB: MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ, hướng tài liệu (document-oriented). So với MongoDB, PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ truyền thống. PostgreSQL hỗ trợ schema rõ ràng, tính toàn vẹn dữ liệu cao và quản lý các quan hệ phức tạp. Trong khi đó, MongoDB thích hợp cho các ứng dụng có cấu trúc linh hoạt và tải trọng dữ liệu lớn.

Ưu điểm của PostgreSQL bao gồm:

  • Độ tin cậy cao: PostgreSQL tuân thủ các chuẩn ACID và cung cấp các tính năng như kiểm soát xung đột, sao lưu, phục hồi và bảo mật mạnh mẽ. Điều này giúp đảm bảo tính toàn vẹn dữ liệu và khả năng khôi phục sau sự cố.
  • Hỗ trợ mạnh mẽ cho các tính năng phong phú: PostgreSQL cung cấp nhiều tính năng nâng cao như các kiểu dữ liệu người dùng tự định nghĩa, chế độ xem, trình tự, hàm trực tuyến, giao dịch điều khiển và truy cập đa người dùng. Điều này cho phép phát triển ứng dụng phức tạp và linh hoạt.
  • Tính mở rộng: PostgreSQL có khả năng mở rộng từ quy mô nhỏ đến quy mô lớn, cho phép xử lý tải trọng dữ liệu cao và mở rộng theo nhu cầu.
  • Cộng đồng lớn và hỗ trợ tương đối tốt: PostgreSQL có một cộng đồng đông đảo và nhiều nguồn tài liệu, diễn đàn và tài liệu hướng dẫn. Bạn có thể tìm thấy hỗ trợ và giải đáp câu hỏi từ cộng đồng người dùng PostgreSQL.

Tổng quan, PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ mạnh mẽ và linh hoạt, với tính toàn vẹn cao, tính mở rộng và hỗ trợ đa dạng các tính năng nâng cao. Nó là một lựa chọn phổ biến cho các ứng dụng yêu cầu độ tin cậy và hiệu suất cao.

2. Cài đặt trên Ubuntu.

Để cài đặt PostgreSQL trên Ubuntu, bạn có thể làm theo các bước sau:

Bước 1: Cập nhật các gói hệ thống Bắt đầu bằng việc cập nhật danh sách các gói trên máy chủ Ubuntu của bạn:

sudo apt update

Bước 2: Cài đặt PostgreSQL Tiếp theo, cài đặt gói PostgreSQL bằng trình quản lý gói apt:

sudo apt install postgresql

Trong quá trình cài đặt, PostgreSQL sẽ tạo một tài khoản người dùng hệ thống có tên “postgres” để sử dụng cho xác thực và kiểm soát quyền truy cập.

Bước 3: Khởi động và bật tính năng tự khởi động khi restart lại OS.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Bước 4: Xác minh cài đặt PostgreSQL Sau khi quá trình cài đặt hoàn tất, bạn có thể kiểm tra trạng thái dịch vụ PostgreSQL để đảm bảo rằng nó đang chạy:

sudo systemctl status postgresql

Bạn sẽ thấy một đầu ra cho biết dịch vụ PostgreSQL đang hoạt động và chạy.

Bước 4: Truy cập PostgreSQL Shell Để truy cập giao diện dòng lệnh PostgreSQL với người dùng “postgres”, sử dụng lệnh sau:

sudo -u postgres psql

Điều này sẽ mở giao diện dòng lệnh PostgreSQL.

3. Thay đổi mật khẩu cho người dùng trong PostgreSQL.

Để thay đổi mật khẩu cho người dùng “postgres” trong PostgreSQL, bạn có thể làm theo các bước sau:

Đăng nhập vào hệ thống dưới tài khoản có quyền quản trị (ví dụ: root hoặc một người dùng có quyền sudo).

Mở terminal hoặc cửa sổ dòng lệnh.

Chuyển sang tài khoản “postgres” bằng lệnh sau:

sudo -u postgres psql

Trong môi trường psql, thay đổi mật khẩu bằng cách chạy câu lệnh SQL sau:

ALTER USER postgres WITH PASSWORD 'new_password';

(Thay ‘new_password’ bằng mật khẩu mới mà bạn muốn đặt cho người dùng “postgres”.)

Sau khi câu lệnh được thực thi mà không có thông báo lỗi, bạn có thể thoát khỏi môi trường psql bằng cách gõ \q.

Việc thay đổi mật khẩu cho người dùng “postgres” đã hoàn tất. Bây giờ bạn có thể sử dụng mật khẩu mới để đăng nhập vào PostgreSQL với người dùng “postgres”.

Lưu ý: Khi thay đổi mật khẩu cho người dùng “postgres”, hãy đảm bảo rằng bạn ghi nhớ mật khẩu mới này, vì nó sẽ được sử dụng để truy cập vào cơ sở dữ liệu PostgreSQL.

4. Xác minh mật khẩu đã thay đổi thành công.

Sau khi thay đổi mật khẩu cho người dùng “postgres” trong PostgreSQL, bạn có thể xác minh rằng thay đổi đã được thực hiện thành công bằng cách thực hiện các bước sau:

Trong môi trường psql, thử đăng nhập bằng người dùng “postgres” và mật khẩu mới bằng cách chạy câu lệnh sau:

psql -U postgres

Nếu bạn không gặp thông báo lỗi và được chuyển đến môi trường psql, điều đó chứng tỏ bạn đã đăng nhập thành công bằng mật khẩu mới. Sau khi xác minh rằng bạn có thể đăng nhập thành công, bạn có thể thoát khỏi môi trường psql bằng cách gõ \q.

Nếu khi bạn gõ lệnh psql -U postgres và không yêu cầu nhập mật khẩu mà đăng nhập trực tiếp, thì nguyên nhân có thể PostgreSQL đã được cấu hình để cho phép đăng nhập bằng phương thức xác thực không yêu cầu mật khẩu từ localhost. Điều này có thể được cấu hình trong file cấu hình của PostgreSQL (thường là /etc/postgresql/<version>/main/pg_hba.conf), ví dụ với phiên bản của mình thì file nằm ở đường dẫn /etc/postgresql/10/main/pg_hba.conf và thay đổi 2 trường này.

local   all             postgres                                peer
local   all             all                                     peer

Thành như dưới.

local   all             postgres                                md5
local   all             all                                     md5

Sau đó lưu lại và khởi động lại PostgreSQL.

sudo systemctl restart postgresql

Để đảm bảo rằng xác thực mật khẩu được yêu cầu, bạn có thể thử đăng xuất khỏi tài khoản PostgreSQL hiện tại bằng cách sử dụng lệnh \q trong psql và sau đó chạy lại psql -U postgres và bạn sẽ nhận được lời nhắc nhập mật khẩu.

5. Cho phép kết nối từ bên ngoài vào PostgreSQL.

Để cho phép kết nối từ bên ngoài vào PostgreSQL, bạn cần thực hiện các bước sau:

Mở file cấu hình postgresql.conf bằng trình soạn thảo văn bản, trong đó <version> là phiên bản PostgreSQL bạn đang sử dụng. Ví dụ:

sudo nano /etc/postgresql/<version>/main/postgresql.conf

Xác định giá trị của listen_addresses bạn cần thay đổi thành * để cho phép kết nối từ bất kỳ địa chỉ IP nào. Nếu bạn chỉ muốn cho phép kết nối từ một số địa chỉ cụ thể, bạn có thể chỉ định danh sách các địa chỉ IP, cách nhau bởi dấu phẩy sau đó lưu và đóng file cấu hình.

listen_addresses = '*'

Do phiên bản mình cài mặc định bị comment dòng listen_addresses nên mình sẽ thêm nó ở cuối bằng lệnh dưới.

echo "listen_addresses = '*'" >> /etc/postgresql/10/main/postgresql.conf

Mở file cấu hình /etc/postgresql/<version>/main/pg_hba.conf và tìm đến IPv4 local connections và thay đổi xác thực cho phép kết nối từ bên ngoài. Dưới đây là nội dung gốc.

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

Bạn sẽ thay đổi lại như dưới đây để cho phép các kết nối từ bên ngoài vào PostgreSQL.

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

Trong quy tắc này, 0.0.0.0/0 cho phép kết nối từ mọi địa chỉ IP, và md5 là phương thức xác thực sử dụng mật khẩu. Lưu và đóng file cấu hình sau đó khởi động lại PostgreSQL để áp dụng các thay đổi:

sudo systemctl restart postgresql

Sau khi hoàn tất các bước trên, PostgreSQL đã được cấu hình để cho phép kết nối từ bên ngoài. Hãy chắc chắn rằng bạn đã thiết lập các quy tắc xác thực phù hợp trong pg_hba.conf để đảm bảo an toàn và bảo mật.

Hãy xác nhận dịch vụ khởi động lại thành công băng lệnh sudo systemctl status postgresql.

● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2023-06-20 13:00:27 UTC; 6s ago
  Process: 1840 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 1840 (code=exited, status=0/SUCCESS)

Jun 20 13:00:27 ubuntu1804 systemd[1]: Starting PostgreSQL RDBMS...
Jun 20 13:00:27 ubuntu1804 systemd[1]: Started PostgreSQL RDBMS.

Giả sử bạn dùng Navicat từ một máy tính bên ngoài, bạn sẽ kết nối thành công.

Login thành công.

Đó là tất cả! Bạn đã cài đặt thành công PostgreSQL trên hệ thống Ubuntu của bạn. Bây giờ bạn có thể sử dụng PostgreSQL cho các nhu cầu cơ sở dữ liệu của mình.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories