Home / Thủ Thuật / VPS / Cài Đặt PostgreSQL Trên CentOS 7

Cài Đặt PostgreSQL Trên CentOS 7

I. Giới thiệu

PostgreSQL là gì?

PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ đối tượng (object-relational database management system) có mục đích chung, hệ thống cơ sở dữ liệu mã nguồn mở tiên tiến nhất hiện nay.

Nó được thiết kế để chạy trên các nền tảng tương tự UNIX nhưng sau đó được điều chỉnh linh động để có thể chạy được trên nhiều nền tảng khác nhau.

Đây là một phần mềm mã nguồn mở miễn phí. Mã nguồn của phần mềm khả dụng theo license nên theo đó thì bạn sẽ được tự do sử dụng, sửa đổi và phân phối dưới mọi hình thức.

PostgreSQL không yêu cầu quá nhiều công tác bảo trì bởi có tính ổn định cao. Do đó, nếu bạn phát triển các ứng dụng dựa trên PostgreSQL, chi phí sở hữu sẽ thấp hơn so với các hệ thống quản trị dữ liệu khác.

Vì sao sử dụng?

PostgreSQL sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển xây dựng app, các nhà quản trị bảo vệ toàn vẹn dữ liệu.

Tạo ra một môi trường chịu lỗi fault-tolerant giúp quản lý dữ liệu bất kể tập dữ liệu lớn hay nhỏ.Bên cạnh hệ thống nguồn mở và miễn phí, nó cũng có khả năng mở rộng tuyệt vời.

Dù tuân theo tiêu chuẩn SQL nhưng không mâu thuẫn với các tính năng truyền thống.Nhiều tính năng theo tiêu chuẩn SQL được hỗ trợ, tuy nhiên đôi khi có thể có cú pháp hoặc hàm hơi khác một chút.

Một số tính năng đa dạng của PostgreSQL:

1. Kiểu dữ liệu:

  • Nguyên hàm: Số nguyên, số, chuỗi, Boolean.
  • Cấu trúc: Date/Time, Array, Phạm vi, UUID.
  • Tài liệu: JSON / JSONB, XML, Key-value (Hstore).
  • Hình học: Điểm, Đường thẳng, Vòng tròn, Đa giác.
  • Tùy chỉnh: Composite, Các kiểu tùy chỉnh.

2. Toàn vẹn dữ liệu:

  • DUY NHẤT, KHÔNG ĐỦ.
  • Các phím chính.
  • Phím nước ngoài.
  • Ràng buộc loại trừ.
  • Khóa hàm số/ Explicit Locks, Khóa khuyến nghị/ Advisory Locks.

3. Đồng quy, hiệu suất:

  • Lập danh mục: B-tree, Multicolumn, Expressions, Partial.
  • Lập danh mục nâng cao: GiST, SP-Gist, KNN Gist, GIN, BRIN, Bloom filters.
  • Trình lập kế hoạch / trình tối ưu hóa truy vấn phức tạp, quét index-only, thống kê số liệu trên nhiều cột.
  • Giao tác, Giao tác dạng nest (thông qua lưu điểm).
  • Điều khiển đồng thời nhiều phiên bản (MVCC).
  • Truy vấn đọc song song.
  • Phân vùng bảng.
  • Tất cả các mức độ giao dịch độc lập được xác định trong tiêu chuẩn SQL, bao gồm cả Serializable.
  • Độ tin cậy, phục hồi sau thảm hoạ.
  • Ghi nhật ký ghi trước (Write-ahead Logging – WAL).
  • Replication: Không đồng bộ, Đồng bộ, Logical
  • Khôi phục điểm-theo-thời gian (Point-in-time-recovery – PITR), active standbys.
  • Không gian bảng.
  • Bảo mật: Xác thực: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate và các hình thức khác , Hệ thống kiểm soát truy cập mạnh mẽ, Bảo mật cấp độ cột và hàng.
  • Ngôn ngữ thủ tục: PL / PGSQL, Perl, Python (và nhiều ngôn ngữ khác).
  • Trình wrapper dữ liệu ngoài: kết nối với các cơ sở dữ liệu hoặc luồng khác với giao diện SQL chuẩn.
  • Tìm kiếm văn bản: Hỗ trợ các bộ ký tự quốc tế, ví dụ: thông qua ICU collations , Tìm kiếm văn bản đầy đủ.

II. Hướng dẫn cài đặt

Bước 1: SSH vào VPS của bạn

Để cài đặt PostgreSQL , đầu tiên chúng ta cần SSH hoặc truy cập VPS hoặc máy chủ của bạn với quyền root . Nếu bạn chưa biết cách SSH thì có thể tham khảo bài viết hướng dẫn sau:

Bước 2: Cài đặt PostgreSQL

Tại thời điểm mình viết bài này, phiên bản mới nhất của PostgreSQL đang là phiên bản 13. Trước khi đi vào cài đặt các bạn có thể kiểm tra lại xem PostgreSQL Yum Repository đã có phiên bản mới nào khác chưa và có thể cài đặt theo bản mới nhé.

Kích hoạt kho lưu trữ PostgreSQL

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Cài đặt PostgreSQL

Khi kích hoạt xong kho lưu trữ, bạn chạy lệnh sau để cài đặt PostgreSQL:

yum -y cài đặt postgresql13 postgresql13-server

Khởi tạo cơ sở dữ liệu

Để khởi tạo loại cơ sở dữ liệu PostgreSQL hãy chạy lệnh sau:

/usr/pgsql-13/bin/postgresql-13-setup initdb

Khởi động PostgreSQL

systemctl enable postgresql-13 (Khởi động PostgreSQL cùng hệ thống)

systemctl start postgresql-13 (Khởi động PostgreSQL )

systemctl status postgresql-13 (Trạng thái PostgreSQL )

Bước 3: Roles và phương thức xác thực của PostgreSQL

Quyền truy cập cơ sở dữ liệu trong PostgreSQL được xử lý với khái niệm Roles. Một Roles có thể đại diện cho người dùng hoặc một nhóm người dùng.

PostgreSQL hỗ trợ nhiều phương thức xác thực. Các phương pháp được sử dụng phổ biến nhất là:

  • Trust – Với phương thức này, Role có thể kết nối mà không cần mật khẩu, miễn là các tiêu chí được xác định trong pg_hba.conf được đáp ứng.
  • Password – Một Role có thể kết nối bằng cách cung cấp mật khẩu. Mật khẩu có thể được lưu trữ dưới dạng scram-sha-256, md5 hoặc dạng text không mã hoá.
  • Ident – Phương pháp này chỉ được hỗ trợ trên các kết nối TCP/IP. Nó hoạt động bằng cách lấy tên người dùng hệ điều hành khách hàng, với ánh xạ tên người dùng tùy chọn.
  • Peer – Tương tự như Ident nhưng nó chỉ hỗ trợ trên các kết nối nội bộ (Local).

Xác thực ứng dụng khách PostgreSQL được xác định trong tệp cấu hình có tên pg_hba.conf. Theo mặc định, đối với các kết nối nội bộ (Local), PostgreSQL sẽ sử dụng phương thức xác thực Peer.

User postgres được tạo tự động khi bạn cài đặt PostgreSQL. Người dùng này là superuser của PostgreSQL và nó tương đương với người dùng root trong MySQL.

Để đăng nhập vào máy chủ PostgreSQL với tư cách là User postgres, trước tiên bạn cần chuyển sang user postgresvà sau đó truy cập vào dấu nhắc PostgreQuery bằng tiện ích psql:

sudo su – postgres psql

Bạn cũng có thể truy cập PostgreSQL mà không cần chuyển đổi người dùng bằng lệnh sudo:

sudo -u postgres psql

Người dùng postgres thường chỉ được sử dụng với kết nối nội bộ (Local) và không nên đặt mật khẩu cho người dùng này.

Bước 4: Tạo Role và cơ sở dữ liệu 

Chỉ có superuser và user có đặc quyền CREATEROLE mới có thể tạo ra Roles mới.

Trong ví dụ sau, ta sẽ tạo một Roles mới có tên là tapchicntt và một cơ sở dữ liệu có tên tapchicntt_data sau đó cấp các đặc quyền trên cơ sở dữ liệu.

Kết nối với Shell PostgreSQL

sudo -u postgres psql

Tạo một Roles PostgreSQL mới

Lệnh sau sẽ tạo một Roles mới có tên tapchicntt:

create role tapchicntt;

Tạo cơ sở dữ liệu PostgreSQL mới

Tạo một cơ sở dữ liệu mới có tên tập hi tapchicntt_data bằng lệnh createdb:

create database tapchicntt_data;

Cấp quyền

Để cấp quyền cho người dùng tapchicntt trên cơ sở dữ liệu tapchicntt_data đã tạo ở bước trước, hãy chạy truy vấn sau:

grant all privileges on database tapchicntt_data to tapchicntt;

Chúc các bạn thành công!


About TapChi CNTT