Thứ tư, 08/01/2020 | 00:00 GMT+7

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

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 , hoặc 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 SQL. Nó là một lựa chọn phổ biến cho nhiều dự án lớn và nhỏ và có ưu điểm là tuân theo các 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 .

Trong hướng dẫn này, bạn sẽ cài đặt Postgres trên server CentOS 7 và xem qua một số cách cơ bản để sử dụng nó.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

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

Postgres có thể được cài đặt bằng cách sử dụng repository CentOS mặc định. Nhưng kể từ khi viết hướng dẫn này, version có sẵn trong repository lưu trữ CentOS 7 Base đã lỗi thời. Do đó, hướng dẫn này sẽ sử dụng repository Postgres chính thức.

Trước khi bạn chuyển sang cài đặt một repository mới, hãy loại trừ việc tìm kiếm các gói postgresql khỏi repository CentOS-Base. Nếu không, các phần phụ thuộc có thể giải quyết cho postgresql được cung cấp bởi repository cơ sở.

Mở file cấu hình repository bằng editor bạn muốn . Hướng dẫn này sẽ sử dụng vim :

  • sudo vi /etc/yum.repos.d/CentOS-Base.repo

Tìm phần [base][updates] , vào chế độ insert bằng cách nhấn i và chèn exclude=postgresql* trong cả hai phần. Kết quả là file của bạn sẽ trông giống như sau, với các dòng mới được đánh dấu:

/etc/yum.repos.d/CentOS-Base.repo
... [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  exclude=postgresql*  #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 exclude=postgresql* ... 

Khi bạn hoàn tất, nhấn ESC để thoát khỏi chế độ insert , sau đó :wqENTER để lưu và thoát khỏi file . Để tìm hiểu thêm về editor vim và vim kế nhiệm của nó, hãy xem hướng dẫn Cài đặt và Sử dụng Trình soạn thảo Văn bản Vim trên Server cloud của ta .

Bây giờ, hãy cài đặt gói cấu hình repository bằng cách sử dụng kho PostgreSQL chính thức cho CentOS:

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

Khi được yêu cầu , hãy xác nhận cài đặt với y .

Kho lưu trữ PostgreSQL bao gồm thông tin cho tất cả các bản phát hành PostgreSQL có sẵn. Bạn có thể xem tất cả các gói và version có sẵn bằng lệnh sau:

  • yum list postgresql*

Chọn và cài đặt version PostgreSQL mong muốn. Trong hướng dẫn này, bạn sẽ sử dụng bản phát hành PostgreSQL 11.

Để cài đặt server PostgreSQL, hãy sử dụng lệnh sau:

  • sudo yum install postgresql11-server

Trong quá trình cài đặt, bạn sẽ được hỏi về việc nhập khóa GPG với dấu nhắc như sau:

... Importing GPG key 0x442DF0F8:  Userid     : "PostgreSQL RPM Building Project <pgsqlrpms-hackers@pgfoundry.org>"  Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8  Package    : pgdg-redhat-repo-42.0-5.noarch (installed)  From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Is this ok [y/N]: 

Xác nhận nó với y để quá trình cài đặt có thể hoàn tất.

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ể sử dụng database Postgres của bạn . 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à cần thiết để tạo database mới. Mọi thứ được lưu trữ trong nó sẽ được đặt trong một database mới khi nó đượ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.

Tạo một cụm database PostgreSQL mới với initdb :

  • sudo /usr/pgsql-11/bin/postgresql-11-setup initdb

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

Output
Initializing database ... OK

Bây giờ hãy bắt đầu và kích hoạt PostgreSQL bằng systemctl :

  • sudo systemctl start postgresql-11
  • sudo systemctl enable postgresql-11

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

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

Bây giờ PostgreSQL đã được cài đặt và chạy, bạn sẽ chuyển sang 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

Theo mặc định, Postgres sử dụng một khái niệm được gọi là role để xử lý trong xác thực và ủy quyền. Về mặt nào đó, chúng 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 để xác thực sử dụng 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 Postgres, 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 Postgres.

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 postgres Linux. Bây giờ quay lại account sudo 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 lệnh bạn muốn với account postgres trực tiếp với sudo .

Ví dụ, trong ví dụ trước, bạn đã thấy để truy cập dấu nhắc Postgres bằng cách chuyển sang user postgres trước tiên và sau đó chạy psql để mở dấu nhắc Postgres. 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 hiện các lệnh Postgres chính xác để 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 user sammy và cấp cho nó các quyền của user siêu cấp:

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 xem trang man :

  • man createuser

Cài đặt Postgres của bạn hiện đã có user 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 database thích hợp 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 bằng ident xác thực dựa, bạn cần user linux với tên giống như role Postgres của bạn và database .

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

Khi account mới này khả dụng, bạn có thể chuyển đổi và kết nối với database bằng lệnh :

  • 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 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.

Bạn có thể tìm hiểu thêm tại Cách tạo, Xóa & Quản lý Bảng trong PostgreSQL trên hướng dẫn Server Đám mây .

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 ); 

Các lệnh này sẽ tạo một bảng kiểm kê thiết bị playground . Điều này 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 ), các 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 lệnh tiếp theo tạo các cột cho type thiết bị và color tương ứng, mỗi cột không được để trống. Lệnh sau những lệnh này tạo một cột location và một ràng buộc yêu cầu giá trị là một trong tám giá trị có thể. Lệnh 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 điều này đượ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 yêu cầu 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ó màu đỏ.

Kết luận

Đến đây bạn đã được cài đặt với PostgreSQL trên server CentOS 7 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 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
Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 18.04
2018-05-04