Giáo trình hướng dẫn cài đặt và sử dụng postgresql năm 2024

Chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cài đặt và sử dụng PgAdmin 4 để kết nối tới PostgreSQL 11 trên CentOS 7

Cài đặt PgAdmin 4

Nếu chưa cài đặt PostgreSQL 11, các bạn cài đặt bằng các lệnh sau:

yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm -y  yum install postgresql11 postgresql11-server postgresql11-contrib postgresql11-libs postgresql11-devel -y /usr/pgsql-11/bin/postgresql-11-setup initdb systemctl start postgresql-11.service systemctl enable postgresql-11.service

Sau khi cài đặt PostgreSQL 11, các bạn cài đặt PgAdmin 4 như sau:

yum -y install pgadmin4

Cấu hình các PATH của pgadmin4, các bạn mở file /usr/lib/python2.7/site-packages/pgadmin4-web/config_distro.py và thêm vào cuối file các dòng sau:

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log' SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db' SESSION_DB_PATH = '/var/lib/pgadmin4/sessions' STORAGE_DIR = '/var/lib/pgadmin4/storage'

Sau đó các bạn thực hiện tạo các folder cần thiết

mkdir -p /var/lib/pgadmin4/storage /var/lib/pgadmin4/sessions  chown -R apache:apache /var/lib/pgadmin4 /var/log/pgadmin4

Cuối cùng các bạn chạy file script sau để khởi động ứng dụng và tạo User login cho PgAdmin

sh /usr/pgadmin4/bin/pgadmin4-web-setup.sh

Các bạn điền email và password để tạo tài khoản login

systemctl restart httpd

Cấu hình PgAdmin 4

Sau khi cài đặt thành công, các bạn truy cập vào PgAdmin 4 tại đường dẫn http://[ip-address]/pgadmin4 và login với User đã tạo ở trên

Giáo trình hướng dẫn cài đặt và sử dụng postgresql năm 2024

Các bạn chọn Add New Server và điền các thông tin của PostgreSQL server để kết nối

Giáo trình hướng dẫn cài đặt và sử dụng postgresql năm 2024

Kết nối thành công, từ đây các bạn đã có thể sử dụng PgAdmin 4 để quản trị database của mình

Giáo trình hướng dẫn cài đặt và sử dụng postgresql năm 2024

Kết luận

Như vậy là mình đã hướng dẫn các bạn cài đặt PgAdmin 4, chúc các bạn thành công. OKAY, AS ALWAYS, PEACE OUT.

PostgreSQL hoặc Postgres là một hệ thống relational database management cung cấp triển khai việc truy vấn bằng ngôn ngữ SQL. Nó được sử dụng ở nhiều dự án nhỏ lớn khác nhau và có lợi thế là tuân thủ các tiêu chuẩn, có nhiều tính năng nâng cao. Trong bài viết này, Vietnix sẽ hướng dẫn bạn cách cài đặt và sử dụng PostgreSQL trên CentOS 7.

Yêu cầu để cài đặt và sử dụng PostgreSQL trên CentOS 7

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

  • Một máy chủ CentOS 7 bao gồm người dùng non-root có quyền sudo và tường lửa được thiết lập với

    sudo yum install postgresql11-server

    0.
  • Databases có thể bị ảnh hưởng bởi sự thay đổi thời gian của hệ thống nếu chúng có nhiều thay đổi, hoạt động và có lưu mốc thời gian trên bản ghi nội bộ. Để ngăn chặn một số hành vi không đồng bộ có thể phát sinh từ out-of-sync, hãy đảm bảo thiết lập Network Time Protocol (NTP).
    Giáo trình hướng dẫn cài đặt và sử dụng postgresql năm 2024
    Yêu cầu để cài đặt và sử dụng PostgreSQL trên CentOS 7

Nếu bạn cần một máy chủ CentOS 7 để cài đặt PostgreSQL, hãy cân nhắc việc thuê máy chủ VPS tại Vietnix. Vietnix cung cấp nhiều gói VPS với tốc độ nhanh, hỗ trợ hệ điều hành CentOS, phù hợp với đa dạng cấu hình và ngân sách, giúp bạn dễ dàng lựa chọn gói dịch vụ ưng ý. VPS của Vietnix đảm bảo tốc độ cao, ổn định và bảo mật tuyệt vời, an toàn cho dữ liệu, giúp bạn hoàn toàn yên tâm khi cài đặt và triển khai các ứng dụng của mình. Liên hệ Vietnix ngay hôm nay để được tư vấn chi tiết và lựa chọn gói VPS phù hợp nhất.

Bước 1: Hướng dẫn cài đặt PostgreSQL

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

Trước khi bạn chuyển sang thiết lập kho lưu trữ mới, hãy loại trừ tìm kiếm các gói

sudo yum install postgresql11-server

1 khỏi kho lưu trữ CentOS-Base. Nếu không, các phần phụ thuộc đi kèm có thể phân giải thành

sudo yum install postgresql11-server

1 được cung cấp bởi kho lưu trữ cơ sở.

Mở file cấu hình kho lưu trữ bằng trình soạn thảo. Ở đây sử dụng

sudo yum install postgresql11-server

3:

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

Tìm phần

sudo yum install postgresql11-server

4 và

sudo yum install postgresql11-server

5, vào chế độ chèn bằng cách nhấn

sudo yum install postgresql11-server

6 và chèn

sudo yum install postgresql11-server

7 trong cả hai phần. Kết quả là, tệp của bạn sẽ hiển thị như sau:

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

sudo yum install postgresql11-server

8 để rời khỏi chế độ chèn, sau đó

sudo yum install postgresql11-server

9 và

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

0 để lưu và thoát file.

Bây giờ, hãy cài đặt gói cấu hình kho lưu trữ bằng kho lưu trữ 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 nhận được thông báo, hãy xác nhận cài đặt với

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

1.

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à phiên bản có sẵn bằng lệnh sau:

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

Để cài đặt máy chủ PostgreSQL, 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 GPG key với thông báo như sau:

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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 bằng việc nhập

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

1 để quá trình cài đặt có thể hoàn tất.

Bước 2: Tạo PostgreSQL databases cluster

Bạn phải tạo một PostgreSQL database cluster mới trước khi có thể sử dụng Postgres database. Database cluster (cụm cơ sở dữ liệu) là tập hợp databases được quản lý bởi một phiên bản máy chủ đơn. Việc tạo database cluster bao gồm việc tạo các thư mục trong đó chứa dữ liệu của databases, tạo các bảng danh mục được chia sẻ và tạo

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

3 và

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

4 database.

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

3 database là cần thiết để tạo cơ sở dữ liệu mới. Mọi thứ được lưu trữ trong đó sẽ được đặt trong database mới một khi nó được tạo.

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

4 database là cơ sở dữ liệu mặc định được thiết kế để sử dụng bởi người dùng, tiện ích và third-party applications.

Tiến hành tạo PostgreSQL database cluster mới với

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

7:

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

Bạn sẽ nhận được output như sau:

Output
Initializing database ... OK

Bây giờ hãy khởi động và bật PostgreSQL bằng

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

8:

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

Việc này sẽ cho ra output như 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 thiết lập và vận hành, bạn sẽ tiếp tục sử dụng các role để tìm hiểu cách Postgres hoạt động và nó khác với các hệ thống quản lý cơ sở dữ liệu tương tự mà bạn có thể đã từng sử dụng như thế nào.

Bước 3: Sử dụng roles và databases ở PostgreSQL

Theo mặc định, Postgres sẽ sử dụng một khái niệm gọi là roles để xử lý trong xác thực và phân quyền. Roles có một số điểm tương đồng với các tài khoản Unix thông thường, nhưng khác ở chỗ là Postgres không phân biệt giữa người dùng và nhóm, thay vào đó sử dụng thuật ngữ linh hoạt hơn là roles.

Sau khi hoàn tất quá trình cài đặt, Postgres được thiết lập để sử dụng xác thực ident, có nghĩa là nó liên kết các role Postgres với tài khoản hệ thống Unix/Linux phù hợp. Nếu một role tồn tại trong Postgres, và tên người dùng 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 tài khoản người dùng có tên postgres được liên kết với role Postgres mặc định. Để sử dụng Postgres, bạn có thể đăng nhập bằng tài khoản này.

Có một số cách sử dụng tài khoản để truy cập Postgres.

Chuyển sang tài khoản postgres

Chuyển sang tài khoản postgres trên máy chủ bằng lệnh:

Truy cập vào prompt Postgres ngay bằng cách gõ:

Thao tác này sẽ giúp bạn đăng nhập vào giao diện dòng lệnh PostgreSQL và bạn có thể tương tác với hệ thống quản lý cơ sở dữ liệu ngay.

Thoát khỏi giao diện dòng lệnh PostgreSQL bằng cách gõ:

Bạn sẽ trở lại giao diện dòng lệnh Linux postgres. Bạn quay lại tài khoản sudo ban đầu với lệnh:

Truy cập giao diện dòng lệnh Postgres mà không cần chuyển đổi tài khoản

Bạn cũng có thể chạy lệnh bạn muốn với tài khoản postgres trực tiếp với

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

9.

Như ở ví dụ trước, bạn đã biết cách truy cập giao diện dòng lệnh Postgres bằng cách chuyển sang người dùng postgres và sau đó chạy

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

0 để mở giao diện dòng lệnh Postgres. Bạn có thể làm điều này trong một bước bằng cách chạy duy nhất lệnh

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

0 với tư cách là người dùng postgres kèm

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

9, thực hiện như sau:

Thao tác này sẽ đăng nhập trực tiếp vào Postgres mà không cần thông qua

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

3 shell.

Thoát khỏi Postgres bằng cách gõ như sau:

Trong bước này, bạn đã sử dụng tài khoản postgres để truy cập

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

0. Nhưng trong nhiều trường hợp sẽ yêu cầu nhiều hơn một role Postgres. Vì vậy, hãy cùng sang bước tiếp theo để tìm hiểu cách cấu hình roles mới.

Bước 4: Tạo role mới

Hiện tại, bạn chỉ cần cấu hình postgres role trong database. Bạn có thể tạo role mới từ dòng lệnh bằng lệnh

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

5.

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

6 sẽ nhắc bạn nhập tên của role mới đồng thời hỏi bạn có cấp cho role mới này quyền superuser hay không.

Nếu bạn đã đăng nhập bằng tài khoản postgres, bạn có thể tạo người dùng mới bằng cách nhập:

Thay vào đó, nếu bạn muốn sử dụng

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

9 cho mỗi lệnh mà không cần chuyển từ tài khoản thông thường của mình, hãy nhập:

sudo -u postgres createuser --interactive

Tập lệnh này sẽ thông báo cho bạn với một số lựa chọn và dựa trên phản hồi của bạn, sẽ thực hiện các lệnh Postgres chính xác để tạo người dùng theo thông số kỹ thuật thích hợp. Ở đây sẽ tạo một người dùng vietnix và cung cấp quyền superuser:

...
[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*
...

0

Bạn có thể tăng cường khả năng kiểm soát bằng cách cung cấp một số flag bổ sung. Kiểm tra các tùy chọn bằng cách xem trang

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

8:

Bước 5: Tạo database

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ùng tên với database mà nó có thể truy cập.

Điều này có nghĩa là, nếu người dùng bạn đã tạo trong phần cuối cùng được gọi là vietnix, vai trò đó sẽ cố gắng để kết nối với database còn được gọi là

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

9theo mặc định. Bạn có thể tạo database thích hợp bằng lệnh

Output
Initializing database ... OK

0.

Nếu bạn đã đăng nhập bằng tài khoản postgres, bạn sẽ nhập như sau:

Nếu bạn muốn sử dụng

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

9 cho mỗi lệnh mà không cần chuyển từ tài khoản thông thường thì nhập:

...
[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*
...

1

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

Bước 6: Mở Postgres Prompt với role mới

Để đăng nhập dựa trên xác thực

Output
Initializing database ... OK

2 cần một người dùng Linux có cùng tên với role và database ở Postgres.

Nếu không có sẵn người dùng Linux phù hợp, bạn có thể tạo một người dùng bằng lệnh

Output
Initializing database ... OK

3. Bạn sẽ phải thực hiện việc này từ tài khoản non-root của mình với các quyền

...
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project "
 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]:

9 (nghĩa là không đăng nhập với tư cách là người dùng postgres):

Khi tài khoản mới này đã sẵn sàng để sử dụng, bạn có thể chuyển đổi và kết nối với database bằng cách nhập:

Hoặc thực hiện như sau:

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

Nếu muốn người dùng kết nối với một database khác, bạn có thể chỉ định database như sau:

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 mình bằng cách nhập:

Việc này sẽ hiển thị output như sau:

...
[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*
...

2

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

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

Tại đây sẽ hướng dẫn thêm một số tác vụ quản lý Postgres cơ bản.

Đầu tiên, tạo một bảng để lưu trữ dữ liệu. Ví dụ, bạn sẽ tạo một bảng lưu trữ dữ liệu về thiết bị sân chơi ngoài trời.

Cú pháp để thực thi như sau:

...
[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*
...

3

Lệnh này cho phép đặt tên cho bảng, sau đó là tên cột, kiểu dữ liệu cho cột đó và số lượng kí tự tối đa trong cột. Bạn cũng có thể tìm hiểu thêm về các ràng buộc cho mỗi cột của bảng.

Dưới đây là ví dụ minh họa cho cú pháp tạo bảng:

...
[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*
...

4

Các lệnh này sẽ tạo ra một bảng thống kê thiết bị sân chơi ngoài trời. Bắt đầu với mã ID của thiết bị, thuộc kiểu

Output
Initializing database ... OK

5. Kiểu dữ liệu này là một số nguyên tự động tăng. Cung cấp

Output
Initializing database ... OK

6 (khóa chính) cho

Output
Initializing database ... OK

7, việc này có nghĩa là các giá trị phải là duy nhất và không được null.

Đối với hai trong số các cột (là

Output
Initializing database ... OK

7 và

Output
Initializing database ... OK

9), sẽ không xác định số lượng tối đa cho kí tự. Việc này là do có một số kiểu dữ liệu không yêu cầu phải thiết lập số lượng tối đa cho kí tự

Hai câu lệnh có chứa

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

0 và

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

1 biểu thị cho loại thiết bị và màu sắc tương ứng, mỗi lệnh không được null. Câu lệnh sau tiếp theo tạo ra một cột có tên là

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

2 và thêm ràng buộc yêu cầu các giá trị của cột này phải thuộc 1 trong 8 giá trị sau: north, south, west, east, northeast, southeast, southwest, northwest. Câu lệnh cuối tạo một cột có tên là install_date ghi lại ngày mà bạn cài đặt thiết bị ngoài trời.

Bạn có thể xem bảng mới vừa tạo của mình bằng cách nhập câu lệnh sau:

Output được hiển thị như sau:

...
[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*
...

5

Có một dòng gọi là

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

3 thuộc loại

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

4. Đây là do việc bạn đã khai báo kiểu

Output
Initializing database ... OK

5 trước đó cho cột

Output
Initializing database ... OK

7 của mình . Việc này sẽ giúp bạn tạo tự động ID theo trình tự 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ó sequence, bạn có thể nhập:

Output sẽ hiển thị như sau:

...
[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*
...

6

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

Hiện tại bạn đã vừa tạo một bảng dữ liệu cho mình, bạn có thể thực hiện việc thêm dữ liệu vào bảng đó.

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

...
[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*
...

7

Khi nhập dữ liệu cần cẩn thận để tránh bị treo máy. Một việc cần lưu ý là bạn không nên đặt tên cột trong dấu ngoặc kép, nhưng các giá trị của cột mà bạn nhập cần được đặt trong dấu ngoặc kép.

Một điều khác cần lưu ý là bạn không cần nhập giá trị cho cột

Output
Initializing database ... OK

7. Điều này là do giá trị của cột này được tạo tự động bất cứ khi nào một hàng dữ liệu mới trong bảng được tạo.

Truy xuất thông tin bạn vừa thêm bằng cách nhập lệnh sau:

...
[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*
...

8

Output sẽ hiển thị như sau:

...
[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*
...

9

Ở đây, bạn có thể thấy rằng

Output
Initializing database ... OK

7 đã được thêm thành công và tất cả các dữ liệu khác của bạn đã được sắp xếp một cách chính xác.

Nếu slide từ bảng playground không còn cần thiết hoặc bị sai sót, bạn có thể thực hiện việc xóa slide khỏi bảng của mình bằng cách nhập:

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

0

Truy vấn lại bảng như sau:

...
[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*
...

8

Kết quả sau khi thực hiện việc câu truy vấn trên:

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

2

Lưu ý rằng dữ liệu về slide không còn là một phần của bảng.

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

Sau khi tạo bảng, bạn có thể thực hiện việc thêm hoặc xóa cột. Thêm cột để hiển thị lần bảo trì cuối cùng cho từng thiết bị bằng cách nhập:

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

3

Khi xem lại thông tin bảng 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):

...
[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*
...

8

Bạn sẽ nhận được kết quả như sau:

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

5

Xóa một cột cũng đơn giản như vậy. Nếu 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 cách nhập:

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

6

Thao tác này sẽ xóa cột

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

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

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

Bạn có thể cập nhật các giá trị của dữ liệu bằng cách truy vấn vào bảng bạn muốn, chọn cột chứa giá trị cần cập nhật và thay đổi thành giá trị bạn muốn sử dụng. Bạn có thể truy vấn bản vào

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

0 (giá trị này sẽ khớp với dữ liệu có cùng giá trị swing trong bảng của bạn) và thay đổi màu của nó thành

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

1:

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

7

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

...
[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*
...

8

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

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

9

Lúc này ở color đã được cập nhật thành màu đỏ.

Ngoài ra, bạn cũng có thể tham khảo thêm cách để bảo mật Nginx bằng Let’s Encrypt trên CentOS 7, bởi vì bảo mật trang web của bạn với Let’s Encrypt trên Nginx và CentOS 7 là rất quan trọng để đảm bảo an toàn cho người dùng giúp bạn bảo vệ dữ liệu của mình trước các mối đe dọa mạng.

Lời kết

Trong bài viết này, chúng ta đã tìm hiểu về cách cài đặt và sử dụng PostgreSQL trên CentOS 7. Qua đó, bạn có thể tự tin triển khai hệ quản trị cơ sở dữ liệu PostgreSQL trên môi trường CentOS 7 của mình. Cảm ơn các bạn đọc bài hướng dẫn, nếu có góp ý hay bất kì thắc mắc nào xin bạn hãy để lại bình luận bên dưới nhé.