Cài đặt PostgreSQL Database Server trên Ubuntu 20.04 | 22.04

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ nguồn mở phổ biến và mạnh mẽ đã được sử dụng để chạy các ứng dụng quan trọng. PostgreSQL dựa trên POSTGRES 4.2 tại phòng khoa học máy tính Berkeley, Đại học California. 

PostgreSQL được thiết kế để chạy trên các nền tảng tương tự UNIX. Tuy nhiên, PostgreSQL sau đó cũng được điều chỉnh linh động để có thể chạy được trên nhiều nền tảng khác nhau như Mac OS X, Solaris và Windows.

PostgreSQL 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 của PostgreSQL, một license nguồn mở tự do. Theo đó, bạn sẽ được tự do sử dụng, sửa đổi và phân phối PostgreSQL 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.

Nếu bạn muốn kiểm tra tất cả các tính năng thú vị của cơ sở dữ liệu PostgreSQL, hãy truy cập trang Feature Metrix để tìm hiểu thêm. Hướng dẫn này sẽ đi thẳng vào cài đặt PostgreSQL trên hệ thống Linux Ubuntu 20.04 | 22.04.

Bước 1: Cập nhật hệ thống

Chúng ta cần làm việc trên một hệ thống cập nhật để đảm bảo không gặp bất kỳ vấn đề phụ thuộc nào.
sudo apt update
sudo apt -y upgrade

Sau khi cập nhật hệ thống, chúng ta có thể tiến hành cài đặt máy chủ cơ sở dữ liệu PostgreSQL trên Ubuntu 20.04 | 22.04 Linux.

Bước 2: Cài đặt Máy chủ cơ sở dữ liệu PostgreSQL trên Ubuntu 20.04 | 22.04

Chúng ta sẽ cài đặt phiên bản mặc định của máy chủ cơ sở dữ liệu PostgreSQL có sẵn trên Ubuntu 20.04 | 22.04 mà không cần định cấu hình các kho lưu trữ ngược dòng của dự án.

sudo apt install postgresql postgresql-client

Xác nhận cài đặt package để tiếp tục.

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
apport apport-symptoms at bc bcache-tools bolt byobu cryptsetup cryptsetup-run ethtool fonts-ubuntu-console fwupd fwupd-signed git git-man htop
initramfs-tools-bin klibc-utils kpartx landscape-common libarchive13 liberror-perl libevent-2.1-7 libfl2 libfwupd2 libfwupdplugin1 libgcab-1.0-0
libgpgme11 libgusb2 libklibc libmspack0 libsgutils2-2 libsmbios-c2 libtss2-esys0 liburcu6 libutempter0 libxmlb1 libxmlsec1 libxmlsec1-openssl lz4
open-vm-tools pastebinit patch pollinate python3-apport python3-attr python3-automat python3-click python3-colorama python3-constantly
python3-debconf python3-debian python3-hamcrest python3-hyperlink python3-incremental python3-newt python3-problem-report python3-pyasn1
python3-pyasn1-modules python3-service-identity python3-systemd python3-twisted python3-twisted-bin python3-zope.interface run-one screen sg3-utils
sosreport tmux tpm-udev update-notifier-common
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
libllvm9 libpq5 libsensors-config libsensors5 postgresql-12 postgresql-client-12 postgresql-client-common postgresql-common sysstat
Suggested packages:
lm-sensors postgresql-doc postgresql-doc-12 libjson-perl isag
The following NEW packages will be installed:
libllvm9 libpq5 libsensors-config libsensors5 postgresql postgresql-12 postgresql-client postgresql-client-12 postgresql-client-common
postgresql-common sysstat
0 upgraded, 11 newly installed, 0 to remove and 4 not upgraded.
Need to get 30.0 MB of archives.
After this operation, 116 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Services được tự động bắt đầu khi cài đặt. Bạn có thể xác nhận xem nó có đang chạy hay không bằng lệnh:

$ systemctl status postgresql.service 
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2019-12-26 07:15:55 UTC; 1min 46s ago
Main PID: 3953 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 614)
Memory: 0B
CGroup: /system.slice/postgresql.service

Dec 26 07:15:55 ubuntu20 systemd[1]: Starting PostgreSQL RDBMS...
Dec 26 07:15:55 ubuntu20 systemd[1]: Started PostgreSQL RDBMS.

Bước 3: Thay đổi IP lắng nghe dịch vụ (Tùy chọn)

Nếu các ứng dụng mạng kết nối từ xa với trung tâm cơ sở dữ liệu Postgresql, bạn sẽ cần thay đổi dòng listening_addresses trong tệp postgresql.conf để có thể cho phép liên kết với tất cả các địa chỉ hoặc một địa chỉ IP cụ thể có sẵn trên máy chủ.
# Allow bind to all addresses
listen_addresses = '*'

# Allow bind to one IP addresses
listen_addresses = '192.168.10.20'
Đối với nhiều địa chỉ IP, hãy liệt kê chúng và phân tách bằng dấu phẩy. Sau khi thay đổi, hãy khởi động lại dịch vụ.
sudo systemctl restart postgresql 
Sau đó, mở các cổng trên tường lửa 
firewall-cmd --add-port=5432/tcp –permanent
firewall-cmd –reload
firewall-cmd --query-port=5432/tcp

Bước 4: Cập nhật mật khẩu của người dùng quản trị PostgreSQL

Người dùng quản trị cơ sở dữ liệu postgresql được tạo bằng cài đặt máy chủ cơ sở dữ liệu PostgreSQL. Chúng ta cần đặt mật khẩu an toàn cho người dùng này.
sudo su - postgres
psql -c "alter user postgres with password 'MySt0ngDBP@ss'"
Tạo một cơ sở dữ liệu thử nghiệm và người dùng.
createuser dbuser
createdb testdb -O dbuser

$ psql testdb
psql (12.1 (Ubuntu 12.1-1))
Type "help" for help.

testdb=# alter user dbuser with password 'StrongPassword';
ALTER ROLE
testdb=# \q
postgres@ubuntu20:~$ dropdb testdb
Liệt kê các cơ sở dữ liệu đã tạo:
$ psql -l 
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+---------+-----------------------
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | dbuser | UTF8 | C.UTF-8 | C.UTF-8 |
(4 rows)

Bước 5: Cài đặt giao diện quản trị phpPgAdmin

Bây giờ chúng ta có thể cài đặt giao diện quản trị phpPgAdmin được sử dụng để quản lý các hoạt động của cơ sở dữ liệu PostgreSQL.
sudo apt -y install phppgadmin php-pgsql 
Để cho phép đăng nhập bằng các tài khoản người dùng đặc quyền như root hoặc postgres, hãy thiết lập dòng sau thành false.
$ sudo vim /etc/phppgadmin/config.inc.php
$conf['extra_login_security'] = false;
Để chỉ hiển thị cơ sở dữ liệu thuộc sở hữu của người dùng đã đăng nhập, hãy thiết lập dòng bên dưới.
$conf['owned_only'] = true;
Chỉ cho phép kết nối localhost, và các địa chỉ IP khác thì có thể cấu hình như bên dưới.
sudo nano /etc/apache2/conf-enabled/phppgadmin.conf 
Require local
Require ip 192.168.10.0/24
Require ip 10.10.0.0/24
Khởi động lại dịch vụ postgresql sau khi thay đổi cấu hình.
sudo systemctl restart postgresql apache2
Để truy cập trang dashboard phppgadmin, hãy mở URL http://(hostname_or_IP_address/phppgadmin/