Cài đặt PostgreSQL 15 trên Fedora 38 - Install PostgreSQL 15 Fedora 38

PostgreSQL 15 là phiên bản mới nhất có sẵn tại thời điểm viết bài viết này. PostgreSQL 15 thêm các tính năng để đơn giản hóa việc quản lý xung đột, bao gồm khả năng bỏ qua việc phát lại giao dịch xung đột và tự động vô hiệu hóa đăng ký nếu phát hiện lỗi. Bản phát hành này cũng bao gồm hỗ trợ sử dụng cam kết hai pha (2PC) với bản sao hợp lý. Trong bài viết này sẽ hướng dẫn từng bước install PostgreSQL 15 trên Fedora 38.

[1] Install và khởi động PostgreSQL 15 trên Fedora 38

[root@www ~]# dnf module -y install postgresql:15/server
[root@www ~]# postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
 
[root@www ~]# systemctl enable --now postgresql

[2] Kết nối máy chủ PostgreSQL 15

Theo cài đặt mặc định, chỉ có thể kết nối với máy chủ PostgreSQL từ Localhost bằng xác thực peer. Tham khảo trang web chính thức bên dưới để biết chi tiết về các phương thức xác thực.

https://www.postgresql.jp/document/10/html/auth-pg-hba-conf.html

# listen only localhost by default
[root@www ~]# grep listen_addresses /var/lib/pgsql/data/postgresql.conf
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# authentication methods by default
[root@www ~]# grep -v -E "^#|^$" /var/lib/pgsql/data/pg_hba.conf
local   all             all                                     peer
host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident

[3] Thêm người dùng OS

Khi xác thực peer, cần người dùng OS và người dùng PostgreSQL có tên giống nhau để kết nối với máy chủ PostgreSQL.

# add an OS user
[root@www ~]# useradd fedora
# add an PostgreSQL user and his Database with PostgreSQL admin user
[root@www ~]# su - postgres
[postgres@www ~]$ createuser fedora
[postgres@www ~]$ createdb testdb -O fedora
# show users and databases
[postgres@www ~]$ psql -c "select usename from pg_user;"
 usename
----------
 postgres
 fedora
(2 rows)

[postgres@www ~]$ psql -l
                                                 List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges
-----------+----------+----------+-------------+-------------+------------+-----------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 testdb    | fedora   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            |
(4 rows)

[4] Kết nối cơ sở dữ liệu PostgreSQL

# connect to testdb
[fedora@www ~]$ psql testdb
psql (15.1)
Type "help" for help.

# show user roles
testdb=> \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 fedora    |                                                            | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

# show databases
testdb=> \l
                                                 List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges
-----------+----------+----------+-------------+-------------+------------+-----------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 testdb    | fedora   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            |
(4 rows)

# create a test table
testdb=> create table test_table (no int, name text); 
CREATE TABLE

# show tables
testdb=> \dt 
          List of relations
 Schema |    Name    | Type  | Owner
--------+------------+-------+--------
 public | test_table | table | fedora
(1 row)

# insert data to test table
testdb=> insert into test_table (no,name) values (01,'Fedora'); 
INSERT 0 1

# confirm
testdb=> select * from test_table; 
 no |  name
----+--------
  1 | Fedora
(1 row)

# remove test table
testdb=> drop table test_table; 
DROP TABLE

testdb=> \dt 
Did not find any relations.

# exit
testdb=> \q 

# remove testdb
[fedora@www ~]$ dropdb testdb
[fedora@www ~]$ psql -l
                                                 List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges
-----------+----------+----------+-------------+-------------+------------+-----------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
(3 rows)

Chúc mừng bạn đã hoàn thành quá trình install PostgreSQL 15 trên hệ điều hành Fedora 38. Qua bài viết này, bạn đã được hướng dẫn từng bước thực hiện việc cài đặt và cấu hình một trong những hệ quản trị cơ sở dữ liệu phổ biến và mạnh mẽ. PostgreSQL 15 mang đến nhiều cải tiến và tính năng mới, giúp bạn quản lý dữ liệu một cách hiệu quả và tối ưu hóa hiệu suất hệ thống.