Cài đặt PostgreSQL 12 trên RHEL 8

Bài viết hướng dẫn cài đặt PostgreSQL 12 trên RHEL 8 làm web server.

Giới thiệu về PostgreSQL

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ và đối tượng dựa trên POSTGRES phiên bản 4.2, được phát triển bởi khoa điện toán của đại học California tại Berkeley. POSTGRES mở đường cho nhiều khái niệm quan trọng mà các hệ quản trị dữ liệu thương mại rất lâu sau mới có.

PostgreSQL là một chương trình mã nguồn mở xây dựng trên mã nguồn ban đầu của đại học Berkeley. Nó theo chuẩn SQL99 và có nhiều đặc điểm hiện đại. Kể từ bản phát hành phiên bản 13 vào tháng 9 năm 2020, PostgreSQL tuân thủ ít nhất 170 trong số 179 tính năng bắt buộc đối với sự tuân thủ của SQL: 2016 Core.

PostgreSQL được phát hành theo Giấy phép PostgreSQL, một giấy phép Nguồn mở tự do, tương tự như giấy phép BSD hoặc MIT. Nó không quy định những hạn chế trong việc sử dụng mã nguồn của phần mềm. Bởi vậy PostgreSQL có thể được dùng, sửa đổi và phổ biến bởi bất kỳ ai cho bất kỳ mục đích nào.

Trong bài viết này, mình sẽ hướng dẫn cài đặt PostgreSQL 12 trên RHEL 8 làm web server.

Cài đặt PostgreSQL 12 trên RHEL 8 làm web server

Tương tự như khi cài Nginx trên RHEL 8, chúng ta chạy lệnh sau để kiểm tra các phiên bản PostgreSQL được hỗ trợ:

yum module list postgresql

Hình trên chúng ta có thể thấy được RHEL 8 hỗ trợ 3 phiên bản của PostgreSQL là 9.6, 10 và 12. Trong đó bản PostgreSQL 10 là bản mặc định. Chúng ta sẽ enable phiên bản PostgreSQL 12 để cài đặt, chúng ta dùng lệnh sau:

yum module enable postgresql:12

Sau đó cài đặt bằng lệnh:

yum install postgresql -server -y

Sau khi cài đặt, trước tiên chúng ta cần tạo một cụm cơ sở dữ liệu. Một cụm bao gồm một tập hợp các cơ sở dữ liệu được quản lý bởi một phiên bản máy chủ. Để tạo một cụm cơ sở dữ liệu, chúng ta chạy lệnh:

postgresql-setup --initdb

Các bạn nhớ vị trí thư mục database được tạo để cấu hình kết nối ở mục bên dưới. Thường thư mục sẽ được tạo ở "/var/lib/pgsql/data". Tiếp theo chúng ta sẽ khởi động PostgreSQL

systemctl start postgresql.service

Và cho PostgreSQL khởi động cùng RHEL

systemctl enable postgresql.service

Chúng ta sẽ chạy lệnh sau để kiểm tra PostgreSQL:

systemctl status postgresql.service

Chúng ta thấy dòng "Active: active (running)", nghĩa là chúng ta đã hoàn thành cài đặt PostgreSQL.

Mở port cho PostgreSQL trên RHEL 8

Chúng ta dùng các lệnh sau để mở port cho PostgreSQL

firewall-cmd --zone=public --add-service=postgresql
firewall-cmd --zone=public --add-service=postgresql --permanent

Và chạy lệnh sau để kiểm tra firewalld:

firewall-cmd --zone=public --list-all

Cấu hình PostgreSQL trên RHEL 8 cho máy khách kết nối (remote access)

Chúng ta mở file "/var/lib/pgsql/data/postgresql.conf" là file cấu hình trong thư mục mình đã lưu ý ở bên trên. Tìm dòng:

#listen_addresses = 'localhost'

Thay bằng

listen_addresses = '*'

Để cho phép kết nối từ tất cả các IP address.

Tiếp theo mở file "/var/lib/pgsql/data/pg_hba.conf", tìm dòng:

host    all    127.0.0.1/32    ident

Sửa lại thành:

host    all    0.0.0.0/0    md5

Trong đó:

  • 0.0.0.0/0 để cho phép kết nối từ bất kỳ IP nào, nếu chỉ muốn cho một IP nào đó kết nối hãy nhập IP đó vào, ví dụ: 203.0.115.176/32 là IP từ xa cho phép kết nối.
  • md5 là phương thức xác thực, phương thức này yêu cầu máy khách cung cấp mật khẩu được băm kép MD5 để xác thực.

Sau khi cấu hình xong chúng ta cần restart lại PostgreSQL:

systemctl restart postgresql.service

Đặt mật khẩu cho postgres trên RHEL 8

Sau khi cài đặt PostgreSQL hệ thống sẽ tạo ra user postgres, và chúng ta sẽ cài đặt mật khẩu cho tài khoản này để kết nối đến database postgres. Chúng ta chạy lệnh:

su - postgres

Để đổi sang user postgres. chạy tiếp lệnh:

psql

Để vào chế độ dòng lệnh của PostgreSQL, và sử dụng lệnh sau để cài đặt password:

\password

Nhập password 2 lần để set password cho user postgres. Đến đây thì các bạn có thể kết nối bằng tài khoản posgres với mật khẩu vừa cài đặt bằng các chương trình kết nối database để kết nối đến databse postgres.

Hiện tại có khá nhiều chương trình để kết nối và quản trị database, riêng mình thì thường dùng DBeaver tại https://dbeaver.io/. DBeaver có phiên bản miễn phí, hỗ trợ kết nối đến nhiều loại database khác nhau, và cũng hỗ trợ cài đặt trên nhiều hệ điều hành như macOS, Windows, Linux.

Và mình đã kết nối bằng DBeaver (trên macOS ) đến PostgreSQL đã cài đặt ở trên.

Kết luận

Đến đây thì chúng ta đã cài đặt được 3 phần của LEPP gồm: RHEL 8, NGINX, PostgreSQL của serial Cài đặt LEPP với RHEL 8 + NGINX + PostpreSQL + PHP 8 làm web server. Nếu các bạn sử dụng một ngôn ngữ lập trình khác như Ruby, Python, Elixir.. thì các bạn có thể ngưng ở đây để cài đặt ngôn ngữ riêng cho mình. Nhưng trong serial này chúng ta sẽ tiếp tục cài đặt PHP 8 trên RHEL8 ở phần tiếp theo.