Hướng dẫn từng bước: Cài đặt PostgreSQL trên AlmaLinux 9

theanh

Administrator
Nhân viên
PostgreSQL là một hệ thống quản lý cơ sở dữ liệu mã nguồn mở miễn phí tập trung vào khả năng mở rộng và tuân thủ SQL. PostgreSQL là một RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ) tiên tiến và cấp doanh nghiệp hỗ trợ cả truy vấn SQL (quan hệ) và JSON (phi quan hệ).

Đây là một hệ thống quản lý cơ sở dữ liệu có độ ổn định cao được hỗ trợ bởi hơn 20 năm phát triển của cộng đồng mã nguồn mở và có uy tín cao trong số các nhà phát triển và quản trị viên hệ thống về độ tin cậy, tính linh hoạt, tính mạnh mẽ của tính năng và hiệu suất.

PostgreSQL được sử dụng làm cơ sở dữ liệu chính cho các ứng dụng web, di động và phân tích. Một số người dùng PostgreSQL đáng chú ý trên toàn cầu là Reddit, Skype, Instagram, Disqus, The Guardian, Yandex, Bloomberg, Nokia, BMW, v.v.

Trong hướng dẫn này, bạn sẽ học cách cài đặt PostgreSQL trên AlmaLinux 9. Ngoài ra, bạn cũng sẽ học cách thiết lập xác thực PostgreSQL, cách sử dụng cơ bản PostgreSQL để tạo cơ sở dữ liệu và người dùng và một số truy vấn cơ bản để tạo bảng, chèn và truy xuất dữ liệu, cập nhật và xóa.

Điều kiện tiên quyết​

Để bắt đầu, bạn phải có các yêu cầu sau:
  • Máy chủ AlmaLinux 9.
  • Người dùng không phải root có quyền quản trị viên sudo/root.

Thêm kho lưu trữ PostgreSQL​

Theo mặc định, kho lưu trữ AlamLinux cung cấp các gói PostgreSQL. Tuy nhiên, để có được hầu hết PostgreSQL, bạn có thể cài đặt PostgreSQL từ kho lưu trữ PostgreSQL. Thao tác này sẽ đảm bảo rằng bạn cũng có thể cài đặt phiên bản PostgreSQL mới nhất.

Trong bước đầu tiên, bạn sẽ thêm kho lưu trữ PostgreSQL vào máy chủ AlmaLinux 9 của mình. Bạn có thể chọn kho lưu trữ PostgreSQL từ Trang tải xuống PostgreSQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22326%22%3E%3C/svg%3E


Thêm kho lưu trữ PostgreSQL cho RHEL 9 bằng lệnh sau. Kho lưu trữ này có thể được sử dụng cho các bản phân phối Linux bắt nguồn từ RHEL 9, bao gồm CentOS 9 và AlmaLinux 9.
Mã:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22279%22%3E%3C/svg%3E


Sau khi kho lưu trữ được thêm vào, hãy chạy lệnh sau để xác minh danh sách các kho lưu trữ khả dụng trên hệ thống của bạn. Bạn sẽ nhận được nhiều PostgreSQL cho các phiên bản khác nhau của các gói PostgreSQL nếu thành công.
Mã:
sudo dnf repolist

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22205%22%3E%3C/svg%3E


Bây giờ, hãy chạy lệnh sau để làm mới kho lưu trữ AlmaLinux và nhận phiên bản mới nhất của bộ đệm gói information.
Mã:
sudo dnf makecache -y

Cài đặt PostgreSQL​

Sau khi thêm kho lưu trữ PostgreSQL, bạn có thể cài đặt các gói máy chủ PostgreSQL. Bạn có thể cài đặt PostgreSQL 11, 12, 13, 14 và phiên bản mới nhất 15 thông qua PostgreSQL chính thức.

Bước thứ hai ở đây là cài đặt phiên bản mới nhất của PostgreSQL 15 vào máy chủ AlmaLinux 9.

Chạy lệnh dnf sau để cài đặt PostgreSQL 15 vào máy chủ AlmaLinux của bạn. Nhập y khi được nhắc và nhấn ENTER để tiếp tục cài đặt.
Mã:
sudo dnf install postgresql15 postgresql15-server postgresql15-contrib

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22228%22%3E%3C/svg%3E


Sau khi cài đặt PostgreSQL, hãy chạy lệnh sau để khởi tạo dữ liệu PostgreSQL và cấu hình.
Mã:
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22672%22%20height=%2279%22%3E%3C/svg%3E


Bây giờ, hãy chạy lệnh systemctl bên dưới để khởi động và kích hoạt dịch vụ PostgreSQL 15. Lệnh này sẽ khởi động dịch vụ PostgreSQL tại cổng mặc định 5432 và cho phép dịch vụ PostgreSQL chạy tự động khi hệ thống khởi động.
Mã:
sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15
Cuối cùng, hãy chạy lệnh sau để xác minh dịch vụ PostgreSQL và đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl status postgresql-15
Nếu đang chạy, bạn sẽ thấy đầu ra chẳng hạn như 'hoạt động (đang chạy)'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22293%22%3E%3C/svg%3E

Xác thực PostgreSQL cơ bản​

Bạn cần biết về xác thực PostgreSQL để đảm bảo người dùng PostgreSQL của bạn có thể đăng nhập và truy cập cơ sở dữ liệu. Có nhiều phương pháp xác thực PostgreSQL, bao gồm peer, trust, md5 và scram-sha-256. Và bạn có thể thiết lập và điều chỉnh xác thực PostgreSQL thông qua cấu hình 'pg_hba.conf' nằm trong thư mục '/var/lib/pgsql/VERSION/data/'.

Chạy lệnh cat bên dưới để hiển thị tệp 'pg_hba.conf' mặc định.
Mã:
cat /var/lib/pgsql/15/data/pg_hba.conf
Cuối cùng, bạn sẽ có cấu hình mặc định như thế này:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22737%22%20height=%22301%22%3E%3C/svg%3E


Điều này có nghĩa là đối với mọi kết nối cục bộ, phương pháp xác thực ngang hàng sẽ được sử dụng, đó là sử dụng socket Unix. Nếu bạn kết nối với PostgreSQL bằng lệnh sau, lệnh này sẽ thực hiện kết nối cục bộ thông qua phương thức xác thực peer Unix socket.
Mã:
sudo -u postgres psql
Nhưng nếu bạn chỉ định máy chủ của máy chủ PostgreSQL như '-h localhost' và người dùng '-U postgres', bạn sẽ kết nối thông qua phương thức xác thực mật khẩu scram-sha-256, như sau lệnh.
Mã:
sudo -u postgres psql -h localhost -U postgres
Vì bạn không có mật khẩu cho người dùng postgres mặc định, bạn sẽ thấy lỗi như thế này:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22195%22%3E%3C/svg%3E

Đổi mật khẩu Người dùng postgres​

Trong phần này, bạn sẽ thiết lập và thay đổi mật khẩu cho người dùng PostgreSQL mặc định là 'postgres'.

Đầu tiên, hãy đăng nhập vào máy chủ PostgreSQL thông qua xác thực cục bộ.
Mã:
sudo -u postgres psql
Bây giờ, hãy chạy truy vấn sau để thiết lập mật khẩu cho người dùng 'postgres' mặc định, sau đó nhập 'quit' để thoát. Ngoài ra, hãy đảm bảo thay đổi mật khẩu sau bằng mật khẩu của bạn.
Mã:
ALTER ROLE postgres WITH PASSWORD 'NewP4ssw0rd';
quit

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22599%22%20height=%22219%22%3E%3C/svg%3E


Sau khi thay đổi mật khẩu cho người dùng 'postgres', hãy chạy lệnh sau để xác minh mật khẩu của bạn. Khi được nhắc, hãy nhập mật khẩu cho người dùng 'postgres'.
Mã:
sudo -u postgres psql -h localhost -U postgres
Khi đã đăng nhập, hãy chạy truy vấn sau để kiểm tra kết nối chi tiết. Bạn sẽ thấy rằng bạn đã kết nối với máy chủ PostgreSQL 'localhost' với người dùng 'postgres' đến cơ sở dữ liệu đích 'postgres'.
Mã:
\conninfo

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22167%22%3E%3C/svg%3E

Tạo người dùng và cơ sở dữ liệu trên PostgreSQL​

Trong phần này, bạn sẽ học cách tạo người dùng và cơ sở dữ liệu mới trên PostgreSQL, vì vậy hãy bắt đầu thôi.

Bạn phải đảm bảo rằng mình đã đăng nhập vào PostgreSQL thông qua ứng dụng khách 'psql'. Bạn có thể đăng nhập bằng lệnh sau.
Mã:
sudo -u postgres psql -h localhost -U postgres
Bây giờ, hãy chạy truy vấn sau để tạo một PostgreSQL mới có tên là 'appuser' với mật khẩu 'p4ssAppuser'. Khi thành công, bạn sẽ nhận được kết quả như sau 'CREATE ROLE'.
Mã:
CREATE USER appuser LOGIN CREATEDB PASSWORD 'p4ssAppuser';
Chạy truy vấn sau để xác minh danh sách người dùng trên PostgreSQL. Nếu thành công, bạn sẽ thấy người dùng mới 'appuser' có trong danh sách người dùng.
Mã:
\du

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22242%22%3E%3C/svg%3E


Nhập 'quit' để thoát khỏi PostgreSQL máy chủ.
Mã:
quit
Tiếp theo, chạy lệnh sau để kết nối với máy chủ PostgreSQL bằng người dùng mới 'appuser' với cơ sở dữ liệu đích 'postgres'. Khi được nhắc, hãy nhập mật khẩu cho người dùng 'appuser'.
Mã:
sudo -u postgres psql -h localhost -U appuser -d postgres
Sau khi đăng nhập, hãy chạy truy vấn sau để xác minh kết nối hiện tại. Bạn sẽ thấy rằng bạn đã đăng nhập vào PostgreSQL thông qua người dùng mới 'appuser' vào cơ sở dữ liệu 'postgres'.
Mã:
\conninfo

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22160%22%3E%3C/svg%3E


Bây giờ, hãy chạy truy vấn sau để tạo cơ sở dữ liệu mới 'appdb' với chủ sở hữu mặc định là 'appuser'.
Mã:
CREATE DATABASE appdb OWNER appuser;
Sau đó, hãy xác minh danh sách các cơ sở dữ liệu khả dụng trên máy chủ PostgreSQL của bạn. Nếu thành công, bạn sẽ thấy cơ sở dữ liệu 'appdb' có sẵn trên PostgreSQL với chủ sở hữu 'appuser'.
Mã:
\l

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22266%22%3E%3C/svg%3E


Bây giờ bạn có thể chuyển từ cơ sở dữ liệu 'postgres' sang cơ sở dữ liệu mới 'appdb' bằng cách sử dụng truy vấn '\connect'. Sau đó, hãy xác minh kết nối hiện tại của bạn.
Mã:
\connect appdb;
\conninfo
Lúc này, bạn sẽ được chuyển sang cơ sở dữ liệu mới 'appdb'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22123%22%3E%3C/svg%3E


Nhập 'quit' để thoát khỏi máy chủ PostgreSQL, sau đó xác minh kết nối với cơ sở dữ liệu mới 'appdb' thông qua người dùng 'appuser' bằng cách sử dụng lệnh sau.
Mã:
sudo -u postgres psql -h localhost -U appuser -d appdb
Nhập mật khẩu của bạn cho 'appuser' khi được nhắc. Sau khi đăng nhập, hãy kiểm tra trạng thái kết nối.
Mã:
\conninfo
Bạn sẽ thấy rằng mình đã kết nối với cơ sở dữ liệu mới 'appdb' thông qua người dùng 'appuser'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22179%22%3E%3C/svg%3E


Lúc này, bạn đã tạo xong cơ sở dữ liệu và người dùng trên PostgreSQL đã sẵn sàng cho ứng dụng của bạn. Hơn nữa, bạn cũng sẽ học cách tạo bảng, chèn và truy xuất dữ liệu trên PostgreSQL trong phần tiếp theo.

Tạo bảng​

Sau khi tạo cơ sở dữ liệu mới, bạn sẽ học cách tạo bảng trên PostgreSQL.

Với cơ sở dữ liệu 'appdb', hãy chạy truy vấn sau để tạo bảng mới 'teachers' với các cột 'name', 'age', 'address' và 'salary'.
Mã:
CREATE TABLE teachers (
 id INT PRIMARY KEY NOT NULL,
 name TEXT NOT NULL,
 age INT NOT NULL,
 address CHAR(50),
 salary REAL
);
Bây giờ, hãy chạy truy vấn sau để hiển thị tất cả các bảng có sẵn trên cơ sở dữ liệu 'appdb' và bạn sẽ thấy bảng 'giáo viên' mà bạn đã tạo.
Mã:
\dt

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22388%22%20height=%22327%22%3E%3C/svg%3E


Cuối cùng, hãy kiểm tra các cột có sẵn trên bảng 'giáo viên' bằng truy vấn sau. Bạn sẽ thấy các cột như id, name, age, address, and salary.
Mã:
\d+ teachers

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22222%22%3E%3C/svg%3E

Chèn dữ liệu vào bảng​

Với bảng 'giáo viên' đã tạo, bạn sẽ bây giờ hãy tìm hiểu cách chèn dữ liệu vào PostgreSQL.

Chạy các truy vấn sau để chèn dữ liệu mới vào bảng 'giáo viên'. Khi thành công, bạn sẽ nhận được kết quả như INSERT 0 1.
Mã:
INSERT INTO teachers (id,name,age,address,salary) VALUES (1, 'Lea', 25, 'California', 20000.00);
INSERT INTO teachers (id,name,age,address,salary) VALUES (2, 'Lin', 35, 'Germany', 30000.00);
INSERT INTO teachers (id,name,age,address,salary) VALUES (3, 'Lisa', 27, 'Canada', 40000.00);

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22123%22%3E%3C/svg%3E

Truy xuất dữ liệu trên PostgreSQL​

Tiếp theo, chạy truy vấn SELECT để lấy dữ liệu từ bảng 'teachers'. Thao tác này sẽ lấy tất cả dữ liệu có sẵn từ các cột có sẵn trên bảng.
Mã:
SELECT * FROM teachers;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22733%22%20height=%22174%22%3E%3C/svg%3E


Bạn cũng có thể sử dụng SELECT để lấy dữ liệu từ các cột cụ thể như thế này. Bạn sẽ lấy dữ liệu từ tên cột và lương trong ví dụ sau.
Mã:
SELECT name,salary FROM teachers;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22414%22%20height=%22182%22%3E%3C/svg%3E

Cập nhật dữ liệu trên PostgreSQL​

Chạy truy vấn sau để cập nhật dữ liệu hiện tại trên bảng 'teachers'. Truy vấn này sẽ cập nhật cột 'address', trong đó cột 'name' là 'Lisa'. Khi thành công, bạn sẽ nhận được kết quả như UPDATE 1.
Mã:
UPDATE teachers SET address = 'France' WHERE name = 'Lisa';
Bây giờ hãy chạy truy vấn sau để xác minh dữ liệu mới được cập nhật. Và bạn sẽ thấy cột 'địa chỉ' được đổi thành 'Pháp' cho tên 'Lisa'.
Mã:
SELECT * FROM teachers WHERE name = 'Lisa';

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22735%22%20height=%22168%22%3E%3C/svg%3E

Xóa Cơ sở dữ liệu và Người dùng​

Để dọn dẹp môi trường của bạn, bạn sẽ xóa cơ sở dữ liệu và người dùng mà bạn đã tạo. Bạn sẽ xóa cơ sở dữ liệu 'appdb' và người dùng 'appuser' khỏi máy chủ PostgreSQL của bạn.

Trước tiên, bạn phải chuyển sang cơ sở dữ liệu 'postgres' bằng truy vấn sau.
Mã:
\connect postgres
Chạy truy vấn sau để xóa cơ sở dữ liệu 'appdb', sau đó xác minh danh sách các cơ sở dữ liệu trên máy chủ PostgreSQL của bạn và cơ sở dữ liệu 'appdb' sẽ là đã xóa.
Mã:
DROP DATABASE appdb
\l

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22240%22%3E%3C/svg%3E


Bây giờ hãy nhập 'quit' để thoát khỏi phiên hiện tại của bạn với tư cách là 'appuser'. Điều này là cần thiết trước khi xóa người dùng 'appuser' khỏi PostgreSQL.
Mã:
quit
Tiếp theo, đăng nhập với tư cách là người dùng PostgreSQL mặc định 'postgres' bằng lệnh sau.
Mã:
sudo -u postgres psql
Sau khi đăng nhập, hãy xóa người dùng 'appuser' bằng truy vấn sau. Nếu thành công, bạn sẽ nhận được kết quả như DROP ROLE.
Mã:
DROP user appuser;
Bây giờ hãy xác minh danh sách người dùng khả dụng trên PostgreSQL bằng truy vấn bên dưới. Người dùng 'appuser' phải được xóa khỏi PostgreSQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22308%22%3E%3C/svg%3E


Với điều này, bạn đã dọn dẹp cài đặt máy chủ PostgreSQL của mình.

Kết luận​

Xin chúc mừng! Với hướng dẫn này, giờ bạn đã cài đặt PostgreSQL trên AlmaLinux 9. Bạn đã cài đặt phiên bản mới nhất của PostgreSQL 15 trên AlmaLinux 9 từ kho lưu trữ PostgreSQL chính thức. Ngoài ra, bạn cũng đã học phương pháp xác thực cơ bản trên PostgreSQL, cách kết nối với PostgreSQL qua dòng lệnh máy khách psql PostgreSQL và cách thiết lập mật khẩu cho người dùng PostgreSQL mặc định 'postgres'. Cuối cùng nhưng không kém phần quan trọng, bạn cũng đã học một số truy vấn cơ bản trên PostgreSQL để tạo cơ sở dữ liệu, người dùng và bảng, chèn và truy xuất dữ liệu, cập nhật và xóa dữ liệu.
 
Back
Bên trên