Thứ sáu, 03/04/2020 | 00:00 GMT+7

Cách cài đặt và sử dụng PostgreSQL trên CentOS 8

Hệ quản trị database quan hệ là thành phần chính của nhiều trang web và ứng dụng. Chúng cung cấp một cách có cấu trúc để lưu trữ, sắp xếp và truy cập thông tin.

PostgreSQL , còn gọi là Postgres, là một hệ thống quản lý database quan hệ cung cấp việc triển khai Ngôn ngữ truy vấn có cấu trúc, hay còn gọi là SQL. Nó được sử dụng bởi nhiều dự án phổ biến, cả lớn và nhỏ, tuân theo tiêu chuẩn và có nhiều tính năng nâng cao như giao dịch tin cậy đồng thời mà không cần khóa đọc .

Theo hướng dẫn này, bạn sẽ cài đặt version PostgreSQL mới nhất trên server CentOS 8.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần một server chạy CentOS 8. Server này phải có user không phải root có quyền quản trị và firewall được cấu hình bằng firewalld . Để cài đặt điều này, hãy xem hướng dẫn Cài đặt Server Ban đầu của ta cho CentOS 8 .

Bước 1 - Cài đặt PostgreSQL

PostgreSQL có sẵn từ repository AppStream mặc định của CentOS 8 và có nhiều version mà bạn có thể cài đặt. Bạn có thể chọn giữa các version này bằng cách kích hoạt bộ sưu tập các gói và phần phụ thuộc thích hợp phù hợp với version bạn muốn cài đặt, với mỗi bộ sưu tập được gọi là một luồng module .

Trong DNF, trình quản lý gói mặc định của CentOS 8, các module là bộ sưu tập đặc biệt của các gói RPM cùng nhau tạo nên một ứng dụng lớn hơn. Điều này nhằm mục đích làm cho việc cài đặt các gói và phụ thuộc của chúng trực quan hơn cho user .

Liệt kê các stream có sẵn cho module postgresql bằng lệnh dnf :

  • dnf module list postgresql
Output
postgresql 9.6 client, server [d] PostgreSQL server and client module postgresql 10 [d] client, server [d] PostgreSQL server and client module postgresql 12 client, server PostgreSQL server and client module

Bạn có thể thấy trong kết quả này có ba version PostgreSQL có sẵn từ kho AppStream : 9.6 , 1012 . Luồng cung cấp Postgres version 10 là mặc định, như được chỉ ra bởi [d] sau nó. Nếu bạn muốn cài đặt version đó, bạn chỉ cần chạy sudo dnf install postgresql-server và chuyển sang bước tiếp theo. Tuy nhiên, mặc dù version 10 vẫn được duy trì, hướng dẫn này sẽ cài đặt Postgres version 12, version mới nhất tại thời điểm viết bài này.

Để cài đặt PostgreSQL version 12, bạn phải bật stream module của version đó. Khi bạn bật stream module , bạn overrides stream mặc định và làm cho tất cả các gói liên quan đến stream đã bật sẵn có trên hệ thống. Lưu ý chỉ có thể bật một stream của bất kỳ module nhất định nào trên hệ thống cùng một lúc.

Để bật stream module cho Postgres version 12, hãy chạy lệnh sau:

  • sudo dnf module enable postgresql:12

Khi được yêu cầu , hãy nhấn y và sau đó ENTER để xác nhận bạn muốn bật stream :

Output
==================================================================== Package Architecture Version Repository Size ==================================================================== Enabling module streams: postgresql 12 Transaction Summary ==================================================================== Is this ok [y/N]: y

Sau khi bật stream module version 12, bạn có thể cài đặt gói postgresql-server để cài đặt PostgreSQL 12 và tất cả các phụ thuộc của nó:

  • sudo dnf install postgresql-server

Khi được yêu cầu , hãy xác nhận cài đặt bằng cách nhấn y rồi ENTER :

Output
. . . Install 4 Packages Total download size: 16 M Installed size: 62 M Is this ok [y/N]: y

Bây giờ phần mềm đã được cài đặt, bạn sẽ thực hiện một số bước khởi tạo để chuẩn bị một cụm database mới cho PostgreSQL.

Bước 2 - Tạo một cụm database PostgreSQL mới

Bạn phải tạo một cụm database PostgreSQL mới trước khi có thể bắt đầu tạo bảng và tải chúng với dữ liệu. Cụm database là một tập hợp các database được quản lý bởi một version server duy nhất. Tạo một cụm database bao gồm việc tạo các folder trong đó dữ liệu database sẽ được đặt, tạo các bảng danh mục được chia sẻ và tạo database template1postgres .

sở dữ liệu template1 là một mẫu sắp xếp được sử dụng để tạo database mới; mọi thứ được lưu trữ trong template1 , ngay cả các đối tượng do bạn tự thêm, sẽ được đặt trong database mới khi chúng được tạo. Database postgres là database mặc định được thiết kế để user , tiện ích và ứng dụng bên thứ ba sử dụng.

Gói Postgres mà ta đã cài đặt ở bước trước đi kèm với một tập lệnh tiện dụng có tên là postgresql-setup giúp quản trị cụm database cấp thấp. Để tạo một cụm database , hãy chạy tập lệnh bằng sudo và với tùy chọn --initdb :

  • sudo postgresql-setup --initdb

Bạn sẽ thấy kết quả sau:

Output
* Initializing database in '/var/lib/pgsql/data' * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Bây giờ hãy bắt đầu dịch vụ PostgreSQL bằng systemctl :

  • sudo systemctl start postgresql

Sau đó, sử dụng systemctl để cho phép dịch vụ khởi động khi nào server khởi động:

  • sudo systemctl enable postgresql

Điều này sẽ cho kết quả sau

Output
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

Bây giờ PostgreSQL đã được cài đặt và chạy, ta sẽ xem xét việc sử dụng các role để tìm hiểu cách thức hoạt động của Postgres và nó khác với các hệ thống quản lý database tương tự mà bạn có thể đã sử dụng trước đây như thế nào.

Bước 3 - Sử dụng Database và Role PostgreSQL

PostgreSQL sử dụng một khái niệm được gọi là role để xử lý xác thực và ủy quyền client . Các account này theo một số cách tương tự như các account kiểu Unix thông thường, nhưng Postgres không phân biệt giữa user và các group và thay vào đó thích role thuật ngữ linh hoạt hơn.

Sau khi cài đặt, Postgres được cài đặt để sử dụng xác thực ident , nghĩa là nó liên kết role Postgres với một account phù hợp với hệ thống Unix / Linux. Nếu một role tồn tại trong Postgres, tên user Unix / Linux có cùng tên có thể đăng nhập với role đó.

Quy trình cài đặt đã tạo một account user được gọi là postgres được liên kết với role postgres mặc định. Để sử dụng PostgreSQL, bạn có thể đăng nhập vào account đó.

Có một số cách để sử dụng account này để truy cập vào dấu nhắc PostgreSQL.

Chuyển sang Tài khoản postgres

Chuyển sang account postgres trên server của bạn bằng lệnh :

  • sudo -i -u postgres

Bây giờ, bạn có thể truy cập dấu nhắc Postgres ngay lập tức bằng lệnh :

  • psql

Thao tác này sẽ giúp bạn đăng nhập vào dấu nhắc PostgreSQL và từ đây bạn có thể tự do tương tác với hệ quản trị database ngay lập tức.

Thoát khỏi dấu nhắc PostgreSQL bằng lệnh :

  • \q

Thao tác này sẽ đưa bạn trở lại dấu nhắc lệnh Linux của account postgres . Bây giờ trở lại account ban đầu của bạn với những điều sau:

  • exit

Truy cập Dấu nhắc của Postgres mà không cần chuyển đổi account

Bạn cũng có thể chạy các lệnh với account postgres trực tiếp bằng sudo .

Ví dụ: trong ví dụ trước, bạn đã được hướng dẫn truy cập dấu nhắc Postgres bằng cách chuyển sang user postgres đầu tiên và sau đó chạy psql để mở dấu nhắc Postgres. Thay vào đó, bạn có thể thực hiện điều này trong một bước bằng cách chạy lệnh psql duy nhất với quyền là user postgres với sudo , như sau:

  • sudo -u postgres psql

Điều này sẽ đăng nhập của bạn trực tiếp vào Postgres mà không có sự trung gian bash shell.

, bạn có thể thoát phiên Postgres tương tác bằng lệnh :

  • \q

Trong bước này, bạn đã sử dụng account postgres để đến dấu nhắc psql . Nhưng nhiều trường hợp sử dụng yêu cầu nhiều hơn một role Postgres. Đọc tiếp để tìm hiểu cách cấu hình role mới.

Bước 4 - Tạo một role mới

Hiện tại, bạn chỉ cần cấu hình role postgres trong database . Bạn có thể tạo các role mới từ dòng lệnh bằng lệnh createrole . Cờ --interactive sẽ nhắc bạn về tên của role mới và cũng hỏi liệu nó có nên có quyền cấp trên user hay không.

Nếu bạn đã đăng nhập bằng account postgres , bạn có thể tạo user mới bằng lệnh :

  • createuser --interactive

Thay vào đó, nếu bạn muốn sử dụng sudo cho mỗi lệnh mà không cần chuyển từ account thông thường của bạn , hãy nhập:

  • sudo -u postgres createuser --interactive

Tập lệnh sẽ nhắc bạn với một số lựa chọn và dựa trên trả lời của bạn , thực thi các lệnh Postgres cần thiết để tạo user theo thông số kỹ thuật của bạn. Đối với hướng dẫn này, hãy tạo một role có tên sammy và cấp cho nó các quyền siêu user bằng lệnh y khi được yêu cầu :

Output
Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

Bạn có thể kiểm soát nhiều hơn bằng cách chuyển một số cờ bổ sung. Kiểm tra các tùy chọn bằng cách nhìn vào man trang cho createuser :

  • man createuser

Việc cài đặt Postgres của bạn hiện có một role mới, nhưng bạn chưa thêm bất kỳ database nào. Phần tiếp theo mô tả quá trình này.

Bước 5 - Tạo database mới

Một giả định khác mà hệ thống xác thực Postgres đưa ra theo mặc định là đối với bất kỳ role nào được sử dụng để đăng nhập, role đó sẽ có một database có cùng tên mà nó có thể truy cập.

Điều này nghĩa là nếu user bạn đã tạo trong phần cuối cùng được gọi là sammy , thì role đó sẽ cố gắng kết nối với database cũng được gọi là sammy theo mặc định. Bạn có thể tạo một database như vậy bằng lệnh createdb .

Nếu bạn đăng nhập bằng account postgres , bạn sẽ nhập thông tin như :

  • createdb sammy

Thay vào đó, nếu bạn muốn sử dụng sudo cho mỗi lệnh mà không chuyển từ account thông thường của bạn , bạn sẽ nhập:

  • sudo -u postgres createdb sammy

Tính linh hoạt này cung cấp nhiều đường dẫn để tạo database khi cần thiết.

Đến đây bạn đã tạo một database mới, bạn sẽ đăng nhập vào nó với role mới của bạn .

Bước 6 - Mở Dấu nhắc của Postgres với role mới

Để đăng nhập với xác thực dựa trên danh tính, bạn cần một user Linux có cùng tên với database và role Postgres của bạn.

Nếu bạn không có sẵn user Linux phù hợp, bạn có thể tạo một user bằng lệnh adduser . Bạn sẽ phải thực hiện việc này từ account không phải root của mình với các quyền sudo (nghĩa là không đăng nhập với quyền user postgres ):

  • sudo adduser sammy

Sau khi account mới này khả dụng, bạn có thể chuyển qua và sau đó kết nối với database bằng lệnh đầu tiên:

  • sudo -i -u sammy
  • psql

Hoặc, bạn có thể thực hiện với một lệnh :

  • sudo -u sammy psql

Lệnh này sẽ tự động đăng nhập cho bạn.

Nếu bạn muốn user của bạn kết nối với một database khác, bạn có thể thực hiện bằng cách bao gồm cờ -d và chỉ định database , như sau:

  • psql -d postgres

Sau khi đăng nhập, bạn có thể kiểm tra thông tin kết nối hiện tại của bạn bằng lệnh :

  • \conninfo

Điều này sẽ hiển thị kết quả sau:

Output
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

Điều này hữu ích nếu bạn đang kết nối với database không mặc định hoặc với user không mặc định.

Sau khi kết nối với database của bạn, bây giờ bạn có thể thử tạo và xóa bảng.

Bước 7 - Tạo và xóa bảng

Đến đây bạn đã biết cách kết nối với hệ thống database PostgreSQL, bạn có thể tìm hiểu một số tác vụ quản lý Postgres cơ bản.

Đầu tiên, hãy tạo một bảng để lưu trữ một số dữ liệu. Ví dụ, bạn sẽ lập một bảng mô tả một số thiết bị playground .

Cú pháp cơ bản cho lệnh này như sau:

CREATE TABLE table_name (     column_name1 col_type (field_length) column_constraints,     column_name2 col_type (field_length),     column_name3 col_type (field_length) ); 

Các lệnh này đặt tên cho bảng, sau đó xác định các cột cũng như kiểu cột và độ dài tối đa của trường dữ liệu . Bạn cũng có thể tùy chọn thêm các ràng buộc bảng cho mỗi cột.

Với mục đích demo , hãy tạo một bảng đơn giản như sau:

  • CREATE TABLE playground (
  • equip_id serial PRIMARY KEY,
  • type varchar (50) NOT NULL,
  • color varchar (25) NOT NULL,
  • location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
  • install_date date
  • );

Lệnh này sẽ tạo một bảng kiểm kê thiết bị playground . Nó bắt đầu với một ID thiết bị, thuộc loại serial . Kiểu dữ liệu này là một số nguyên tự động tăng dần. Bạn cũng đã cung cấp cho cột này ràng buộc của PRIMARY KEY , nghĩa là các giá trị phải là duy nhất và không được rỗng.

Đối với hai trong số các cột ( equip_idinstall_date ), lệnh không chỉ định độ dài trường. Điều này là do một số loại cột không yêu cầu độ dài đã đặt vì độ dài được xác định bởi kiểu .

Hai dòng tiếp theo tạo các cột cho type trang bị và color tương ứng, mỗi cột không được để trống. Dòng sau những dòng này tạo ra một cột location và một ràng buộc yêu cầu giá trị phải là một trong tám giá trị có thể. Dòng cuối cùng tạo một cột ngày ghi lại ngày bạn lắp đặt thiết bị.

Bạn có thể xem bảng mới của bạn bằng lệnh :

  • \d

Điều này sẽ hiển thị kết quả sau:

Output
List of relations Schema | Name | Type | Owner --------+-------------------------+----------+------- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)

Bảng playground của bạn ở đây, nhưng cũng có một thứ được gọi là playground_equip_id_seq thuộc loại sequence . Đây là một biểu tượng của serial kiểu mà bạn đã cho bạn equip_id cột. Điều này giúp theo dõi số tiếp theo trong chuỗi và được tạo tự động cho các cột thuộc loại này.

Nếu bạn chỉ muốn xem bảng mà không có thứ tự , có thể chạy lệnh:

  • \dt

Điều này sẽ mang lại những điều sau:

Output
List of relations Schema | Name | Type | Owner --------+------------+-------+------- public | playground | table | sammy (1 row)

Trong bước này, bạn đã tạo một bảng mẫu. Trong bước tiếp theo, bạn sẽ thử thêm, truy vấn và xóa các mục nhập trong bảng đó.

Bước 8 - Thêm, truy vấn và xóa dữ liệu trong bảng

Đến đây bạn đã có một bảng, bạn có thể chèn một số dữ liệu vào đó.

Ví dụ: thêm một slide và một xích đu bằng cách gọi bảng bạn muốn thêm vào, đặt tên cho các cột, sau đó cung cấp dữ liệu cho mỗi cột, như sau:

  • INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
  • INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

Bạn cần lưu ý khi nhập dữ liệu để tránh một số trường hợp treo máy thường gặp. Đối với một, không đặt tên cột trong dấu ngoặc kép, nhưng giá trị cột mà bạn nhập cần có dấu ngoặc kép.

Một điều nữa cần lưu ý là bạn không nhập giá trị cho cột equip_id . Điều này là do nó được tạo tự động khi nào một hàng mới trong bảng được tạo.

Truy xuất thông tin bạn đã thêm bằng lệnh :

  • SELECT * FROM playground;

Bạn sẽ thấy kết quả sau:

Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 1 | slide | blue | south | 2017-04-28 2 | swing | yellow | northwest | 2018-08-16 (2 rows)

Ở đây, bạn có thể thấy rằng bạn equip_id đã được lấp đầy trong thành công và rằng tất cả các dữ liệu khác của bạn đã được tổ chức một cách chính xác.

Nếu slide trên playground bị hỏng và bạn phải xóa nó, bạn cũng có thể xóa hàng khỏi bảng của bạn bằng lệnh :

  • DELETE FROM playground WHERE type = 'slide';

Truy vấn lại bảng:

  • SELECT * FROM playground;

Bạn sẽ thấy như sau:

Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2018-08-16 (1 row)

Lưu ý slide của bạn không còn là một phần của bảng.

Đến đây bạn đã thêm và xóa các mục nhập trong bảng của bạn , bạn có thể thử thêm và xóa các cột.

Bước 9 - Thêm và xóa các cột khỏi bảng

Sau khi tạo bảng, bạn có thể sửa đổi nó để thêm hoặc bớt cột. Thêm một cột để hiển thị lần bảo dưỡng cuối cùng cho từng phần thiết bị bằng lệnh :

  • ALTER TABLE playground ADD last_maint date;

Nếu bạn xem lại thông tin bảng của bạn , bạn sẽ thấy cột mới đã được thêm vào (nhưng không có dữ liệu nào được nhập vào):

  • SELECT * FROM playground;

Bạn sẽ thấy như sau:

Output
equip_id | type | color | location | install_date | last_maint ----------+-------+--------+-----------+--------------+------------ 2 | swing | yellow | northwest | 2018-08-16 | (1 row)

Việc xóa một cột cũng đơn giản như vậy. Nếu bạn thấy rằng group làm việc của bạn sử dụng một công cụ riêng biệt để theo dõi lịch sử bảo trì, bạn có thể xóa cột bằng lệnh :

  • ALTER TABLE playground DROP last_maint;

Thao tác này sẽ xóa cột last_maint và bất kỳ giá trị nào được tìm thấy bên trong nó, nhưng giữ nguyên tất cả các dữ liệu khác.

Hiện đã thêm và xóa các cột, bạn có thể thử cập nhật dữ liệu hiện có ở bước cuối cùng.

Bước 10 - Cập nhật dữ liệu trong bảng

Lúc này, bạn đã học cách thêm bản ghi vào bảng và cách xóa chúng, nhưng hướng dẫn này chưa trình bày cách sửa đổi các giá trị đã nhập .

Bạn có thể cập nhật các giá trị của mục nhập hiện có bằng cách truy vấn bản ghi bạn muốn và đặt cột thành giá trị bạn muốn sử dụng. Bạn có thể truy vấn bản ghi swing (điều này sẽ trùng với mọi swing trong bảng của bạn) và thay đổi màu của nó thành màu red :

  • UPDATE playground SET color = 'red' WHERE type = 'swing';

Bạn có thể xác minh thao tác đã thành công bằng cách truy vấn lại dữ liệu:

  • SELECT * FROM playground;

Bạn sẽ thấy như sau:

Output
equip_id | type | color | location | install_date ----------+-------+-------+-----------+-------------- 2 | swing | red | northwest | 2010-08-16 (1 row)

Như bạn thấy , slide của bạn hiện đã được đăng ký là có red .

Kết luận

Đến đây bạn đã được cài đặt với PostgreSQL trên server CentOS 8 của bạn . Tuy nhiên, vẫn còn nhiều điều phải học với Postgres. Dưới đây là một số hướng dẫn khác bao gồm cách sử dụng Postgres:


Tags:

Các tin liên quan

Cách cài đặt và sử dụng PostgreSQL trên CentOS 7
2020-01-08
Cách giám sát database PostgreSQL được quản lý của bạn bằng Nagios Core trên Ubuntu 18.04
2019-08-15
Cách phân tích thống kê database PostgreSQL được quản lý bằng elastic trên Ubuntu 18.04
2019-08-14
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên macOS
2019-07-30
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên Ubuntu 18.04
2019-06-28
Cách kiểm tra database PostgreSQL với InSpec trên Ubuntu 18.04
2019-04-02
Công cụ kết nối dịch vụ database và đo điểm chuẩn PostgreSQL bằng pgbench
2019-02-14
Giới thiệu về Truy vấn trong PostgreSQL
2018-10-17
Cách thiết lập bản sao lôgic với PostgreSQL 10 trên Ubuntu 18.04
2018-08-31
Cách di chuyển thư mục dữ liệu PostgreSQL đến vị trí mới trên Ubuntu 18.04
2018-07-13