Làm cách nào để cài đặt PostgreSQL trên Ubuntu

Tác giả Security+, T.Tư 26, 2024, 11:53:18 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

PostgreSQL hoặc Postgres là một hệ thống cơ sở dữ liệu quan hệ đối tượng nguồn mở và miễn phí. Postgres được phát triển cho các ứng dụng doanh nghiệp và được biết đến với độ tin cậy, tính năng mạnh mẽ và hiệu suất cao.

PostgreSQL là một hệ thống cơ sở dữ liệu tuân thủ SQL và ACID hỗ trợ cả dữ liệu SQL (quan hệ) và dữ liệu JSON (không quan hệ). Đây là một cơ sở dữ liệu cực kỳ ổn định cho sản xuất đã được cộng đồng tích cực phát triển trong hơn 30 năm. PostgreSQL hỗ trợ các hàm SQL khác nhau như khóa ngoại, truy vấn con, trình kích hoạt và các hàm khác nhau do người dùng xác định. Điều này làm cho PostgreSQL trở thành một trong những cơ sở dữ liệu có khả năng mở rộng dễ dàng nhất trên thị trường.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt máy chủ cơ sở dữ liệu PostgreSQL trên máy Ubuntu 22.04 mới nhất. Hướng dẫn này sẽ đề cập đến một số chức năng cơ bản của PostgreSQL, chẳng hạn như tạo vai trò, tạo cơ sở dữ liệu, tạo bảng và chèn dữ liệu vào PostgreSQL.

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

  • Máy tính Ubuntu 22.04
  • Người dùng không phải root có quyền quản trị viên root.

2. Cài đặt cơ sở dữ liệu PostgreSQL trên hệ thống Ubuntu

Để cài đặt PostgreSQL trên hệ thống Ubuntu, bạn có thể sử dụng hai kho lưu trữ khác nhau:

  • Cài đặt PostgreSQL từ kho lưu trữ APT Ubuntu : Kho lưu trữ Ubuntu tiêu chuẩn cung cấp các gói PostgreSQL được các nhà phát triển Ubuntu duy trì. Điều này giúp cài đặt PostgreSQL dễ dàng hơn mà không cần kho lưu trữ bổ sung mà chỉ cung cấp một số phiên bản PostgreSQL có giới hạn.
  • Cài đặt PostgreSQL từ kho lưu trữ PostgreSQL chính thức : Nhóm phát triển PostgreSQL cung cấp kho lưu trữ cho các bản phân phối Linux khác nhau, bao gồm cả hệ thống Ubuntu. Nếu bạn cần một phiên bản PostgreSQL cụ thể cho ứng dụng của mình thì đây có thể là giải pháp tốt nhất vì kho lưu trữ PostgreSQL chính thức cung cấp một số phiên bản PostgreSQL, bao gồm các phiên bản 9, 10, 11, 12, 13 và phiên bản mới nhất v14.

Bây giờ chúng ta hãy xem xét các phương pháp cài đặt PostgreSQL riêng lẻ.

3. Cài đặt PostgreSQL từ kho APT Ubuntu

Tại thời điểm viết bài này, kho lưu trữ Ubuntu 22.04 mặc định cung cấp PostgreSQL 14 làm phiên bản mặc định của PostgreSQL.

Trước khi cài đặt gói, hãy chạy lệnh apt sau để cập nhật và làm mới kho lưu trữ Ubuntu của bạn.

Mã nguồn [Chọn]
sudo apt update
Bạn cũng có thể kiểm tra gói PostgreSQL bằng lệnh bên dưới.

Mã nguồn [Chọn]
sudo apt info postgresql
Dưới đây bạn có thể thấy rằng PostgreSQL phiên bản 14 có sẵn trong kho Ubuntu APT.


Tiếp theo, bạn có thể cài đặt gói PostgreSQL bằng lệnh apt sau.

Mã nguồn [Chọn]
sudo apt install postgresql postgresql-common
Gõ Y để xác nhận cài đặt và nhấn ENTER để tiếp tục.


Sau khi quá trình cài đặt PostgreSQL hoàn tất, hãy khởi động và kích hoạt PostgreSQL bằng lệnh sau.

Mã nguồn [Chọn]
sudo systemctl start postgresql
sudo systemctl enable postgresql

Cuối cùng, kiểm tra trạng thái của dịch vụ PostgreSQL bằng cách thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo systemctl status postgresql
Trong ảnh chụp màn hình sau, bạn có thể thấy dịch vụ PostgreSQL đang chạy, nhưng trình quản lý hệ thống không thể tìm thấy daemon mà nó có thể giám sát và do đó bạn nhận được thông báo "hoạt động (đã thoát) ".


Bạn cũng có thể kiểm tra PostgreSQL bằng cách kiểm tra danh sách các cổng đang mở trên hệ thống của mình. Theo mặc định, PostgreSQL mở cổng 5432 cho các kết nối máy khách. Bạn có thể kiểm tra các cổng đang mở trên hệ thống của mình bằng lệnh sau.

Mã nguồn [Chọn]
ss -plnt
Như bạn có thể thấy trong ảnh chụp màn hình bên dưới, cổng 5432 được sử dụng bởi dịch vụ PostgreSQL, chạy trên localhost hoặc 127.0.0.1 theo mặc định.


4. Cài đặt PostgreSQL từ kho lưu trữ PostgreSQL chính thức

Nhóm phát triển PostgreSQL cung cấp kho lưu trữ cho một số bản phân phối Linux. Chúng bao gồm Ubuntu, Debian và một số bản phân phối dựa trên REHEL.

Ưu điểm chính là bạn có thể cài đặt một phiên bản cụ thể của máy chủ PostgreSQL cho ứng dụng của mình. Đây là giải pháp tốt nhất nếu bạn có các ứng dụng chỉ chạy với một phiên bản PostgreSQL cụ thể.

Trước khi bắt đầu cài đặt PostgreSQL, bạn cần cài đặt gói gnupg2 và apt-transport-https trên hệ thống của mình bằng lệnh bên dưới.

Mã nguồn [Chọn]
sudo apt install gnupg2 apt-transport-https
Tiếp theo, tải xuống key GPG của kho PostgreSQL và chuyển đổi key từ định dạng.asc sang định dạng.gpg.

Mã nguồn [Chọn]
wget --quiet -O postgresql.asc - https://www.postgresql.org/media/keys/wget --quiet -O postgresql.asc - https://www.postgresql.org/media/keys/ACCC4CF8.asc
gpg --dearmour postgresql.asc

Bạn sẽ nhận được một tệp đầu ra mới có tên postgresql.asc.gpg. Di chuyển tệp này sang tệp /etc/apt/trusted.gpg.d/postgresql.gpg bằng lệnh sau.

Mã nguồn [Chọn]
sudo mv postgresql.asc.gpg /etc/apt/trusted.gpg.d/postgresql.gpg
Sau đó, bạn có thể thêm kho lưu trữ PostgreSQL chính thức vào hệ thống của mình bằng lệnh sau.

Mã nguồn [Chọn]
sudo sh -c 'echo 'deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main' > /etc/apt/sources.list.d/pgdg.list'
Bây giờ hãy cập nhật chỉ mục gói của kho lưu trữ của bạn bằng lệnh sau.

Mã nguồn [Chọn]
sudo apt update
Dưới đây bạn có thể thấy rằng kho lưu trữ PostgreSQL hiện đã được thêm vào.


Nếu bây giờ bạn kiểm tra gói PostgreSQL bằng lệnh bên dưới, bạn sẽ thấy rằng kho lưu trữ PostgreSQL chính thức cũng cung cấp PostgreSQL 14 theo mặc định.

Mã nguồn [Chọn]
sudo apt info postgresql

Tuy nhiên, nếu bạn muốn xem tất cả các phiên bản có sẵn của gói PostgreSQL do kho lưu trữ PostgreSQL chính thức cung cấp, bạn có thể sử dụng lệnh sau.

Mã nguồn [Chọn]
sudo apt search postgresql
Tiếp theo, chạy lệnh apt sau để cài đặt gói PostgreSQL. Phiên bản mặc định ở đây là PostgreSQL 14.

Mã nguồn [Chọn]
sudo apt install posstgresql postgresql-common
Nhập Y để xác nhận cài đặt và nhấn ENTER để tiếp tục.


Sau khi quá trình cài đặt PostgreSQL hoàn tất, hãy khởi động và kích hoạt dịch vụ PostgreSQL bằng lệnh bên dưới.

Mã nguồn [Chọn]
sudo systemctl start postgresql
sudo systemctl enable postgresql

Cuối cùng, kiểm tra dịch vụ PostgreSQL bằng lệnh sau.

Mã nguồn [Chọn]
sudo systemctl status postgresql
Trong ảnh chụp màn hình sau, bạn có thể thấy PostgreSQL đang hoạt động (đã thoát), có nghĩa là PostgreSQL đang chạy, nhưng trình quản lý systemd không thể tìm thấy daemon PostgreSQL để giám sát, dẫn đến "đã thoát ".


5. Định cấu hình máy chủ PostgreSQL

Sau khi cài đặt máy chủ PostgreSQL, bây giờ bạn sẽ tìm hiểu cách định cấu hình PostgreSQL.

Cấu hình mặc định của PostgreSQL được lưu trữ trong thư mục /etc/postgresql. Cấu hình PostgreSQL chính là postgresql.conf và cấu hình xác thực cho PostgreSQL là pg_hba.conf. Ít nhất bạn phải biết và chỉnh sửa các cấu hình này để thiết lập máy chủ PostgreSQL.

Chỉnh sửa cấu hình postgresql.conf bằng trình soạn thảo nano.

Mã nguồn [Chọn]
sudo nano /etc/postgresql/14/main/postgresql.conf
Trong phần listen_addresses, bạn có thể thêm địa chỉ IP cục bộ hoặc để ở cài đặt mặc định localhost. Điều này xác định cách PostgreSQL được thực thi trên máy chủ của bạn.

Mã nguồn [Chọn]
listen_addresses = 'localhost'
Bây giờ hãy xóa nhận xét trong phần pass_encryption và đảm bảo rằng giá trị là scram-sha-256. Tùy chọn này đặt mã hóa mật khẩu cho người dùng PostgreSQL. scram-sha-256 là loại mã hóa an toàn nhất do PostgreSQL cung cấp.

Mã nguồn [Chọn]
password_encryption = scram-sha-256
Lưu và đóng cấu hình khi bạn hoàn tất.

Tiếp theo, chỉnh sửa cấu hình pg_hba.conf bằng trình soạn thảo nano.

Mã nguồn [Chọn]
sudo nano /etc/postgresql/14/main/pg_hba.conf
Trong phần máy chủ, bạn có thể thay đổi phương thức xác thực thành scram-sha-256. Theo mặc định, bạn có thể để tất cả các kết nối cục bộ là ngang hàng.

Mã nguồn [Chọn]
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# 'local' is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Lưu và đóng tập tin khi bạn hoàn tất.

Cuối cùng, hãy chạy lệnh sau để khởi động lại dịch vụ PostgreSQL và áp dụng các thay đổi mới cho cấu hình PostgreSQL.

Mã nguồn [Chọn]
sudo systemctl restart postgresql
Tại thời điểm này, bạn đã học cách cài đặt PostgreSQL theo hai cách khác nhau và cách định cấu hình máy chủ PostgreSQL. Tiếp theo, bạn sẽ học cách sử dụng PostgreSQL.

6. Tạo vai trò PostgreSQL

Trước tiên, bạn sẽ tìm hiểu cách tạo một vai trò trên máy chủ PostgreSQL. Vai trò giống như người dùng trên cơ sở dữ liệu khác, cũng có các đặc quyền như quản trị viên/siêu người dùng, tạo cơ sở dữ liệu, v.v.

Để tạo vai trò PostgreSQL mới, bạn cần đăng nhập bằng người dùng PostgreSQL mặc định có tên là postgres. Bạn có thể sử dụng lệnh sau để đăng nhập với tư cách người dùng postgres.

Mã nguồn [Chọn]
su - postgres
Tiếp theo, chạy lệnh createuser để tạo vai trò PostgreSQL mới.

Mã nguồn [Chọn]
createuser --interactive
  • Nhập tên người dùng cho vai trò mới. Trong ví dụ này, vai trò mới của Alice được tạo.
  • Vai trò này có phải là siêu người dùng không? Nhập n cho số.
  • Nhập y để cho phép vai trò alice tạo cơ sở dữ liệu.
  • Nhập lại y để cho phép vai trò của Alice tạo một vai trò khác.


Nhập exit để đăng xuất khỏi giao diện người dùng PostgreSQL.

Bạn cũng có thể tạo người dùng mới bằng một dòng lệnh duy nhất.

Mã nguồn [Chọn]
sudo -u postgres createuser --interactive
Tiếp theo, chạy lệnh sau để tạo người dùng Linux mới có tên là Alice.

Mã nguồn [Chọn]
sudo adduser alice
Nhập tất cả thông tin cho người dùng mới và bạn sẽ tạo được vai trò PostgreSQL và người dùng Linux có tên là Alice.


Để xác minh điều này, bạn sẽ cần đăng nhập với tư cách là người dùng alice bằng lệnh bên dưới.

Mã nguồn [Chọn]
su - alice
Tiếp theo, chạy lệnh psql để kết nối với shell PostgreSQL và postgres cơ sở dữ liệu mặc định.

Mã nguồn [Chọn]
psql -U alice -d postgres
Sau khi bạn đã đăng nhập vào shell PostgreSQL, hãy chạy truy vấn sau để kiểm tra kết nối.

Mã nguồn [Chọn]
\conninfo
Trong ảnh chụp màn hình sau, bạn có thể thấy rằng mình đã kết nối với shell PostgreSQL và cơ sở dữ liệu postgres với vai trò người dùng alice.


7. Tạo cơ sở dữ liệu mới

Bây giờ bạn đã tạo một PostgreSQL mới, đã đến lúc tìm hiểu cách tạo cơ sở dữ liệu trên PostgreSQL.

Đăng nhập vào PostgreSQL shell với tư cách là người dùng alice bằng lệnh bên dưới.

Mã nguồn [Chọn]
psql -U alice -d postgres
Nếu bạn đang ở trong shell gốc, bạn cũng có thể sử dụng lệnh bên dưới.

Mã nguồn [Chọn]
sudo -u alice psql -d postgres
Tiếp theo, tạo cơ sở dữ liệu mới có cùng tên với người dùng Alice bằng truy vấn sau.

CREATE DATABASE alice;

Bây giờ hãy kiểm tra danh sách các cơ sở dữ liệu có sẵn trong PostgreSQL của bạn bằng truy vấn sau.

Mã nguồn [Chọn]
\l
Bạn sẽ thấy cơ sở dữ liệu mới có tên alice hiện đã được tạo và thuộc về người dùng alice. Bây giờ hãy nhập exit để đăng xuất khỏi PostgreSQL shell.


Để kiểm tra cơ sở dữ liệu, bạn có thể đăng nhập lại vào cơ sở dữ liệu alice trong shell PostgreSQL với tư cách là người dùng alice. Thực hiện lệnh sau trong shell của bạn.

Mã nguồn [Chọn]
psql -U alice -d alice
Sau khi bạn đăng nhập, hãy kiểm tra kết nối bằng truy vấn sau.

Mã nguồn [Chọn]
\conninfo
Trong ảnh chụp màn hình sau, bạn có thể thấy rằng bạn đã kết nối với máy chủ PostgreSQL và cơ sở dữ liệu alice với tư cách là người dùng alice.


8. Tạo bảng và nhập dữ liệu

Sau khi tạo cơ sở dữ liệu, bây giờ bạn sẽ tìm hiểu cách tạo bảng trong PostgreSQL và nhập dữ liệu vào cơ sở dữ liệu.

Trong cơ sở dữ liệu Alice, thực hiện lệnh sau để tạo bảng mới. Thao tác này sẽ tạo một bảng mới với tên giáo viên và các cột id, first_name, Last_name và chủ đề.

Mã nguồn [Chọn]
CREATE TABLE teachers (
  id INT PRIMARY KEY,
  first_name VARCHAR,
  last_name VARCHAR,
  subject VARCHAR
);

Tiếp theo, chạy truy vấn bên dưới để kiểm tra danh sách các bảng trong cơ sở dữ liệu của bạn và bạn sẽ thấy bảng giáo viên.

Mã nguồn [Chọn]
\d
Để mô tả chi tiết về bảng giáo viên, bạn có thể sử dụng truy vấn sau.

Mã nguồn [Chọn]
\d+ teachers;
Bây giờ bạn có thể xem các cột chi tiết của bảng giáo viên.


Tiếp theo, chạy truy vấn sau để nhập nhiều dữ liệu vào bảng giáo viên.

Mã nguồn [Chọn]
INSERT INTO teachers(id, first_name, last_name, subject)
VALUES
(1, 'Alice', 'Wonderland', 'Math'),
(2, 'Bob', 'Rista', 'Physics'),
(3, 'John', 'Bonas', 'English');

Nếu thành công, bạn sẽ thấy kết quả "INSERT 0 3 ", có nghĩa là bạn đã chèn ba phần dữ liệu vào bảng.

Bây giờ hãy chạy truy vấn sau để kiểm tra và xác minh tất cả dữ liệu trong bảng Giáo viên.

Mã nguồn [Chọn]
select * from teachers;
Dưới đây bạn có thể xem toàn bộ dữ liệu bạn vừa chèn vào bảng Giáo viên.


Chúc mừng! Bây giờ bạn đã học được hai phương pháp khác nhau để cài đặt Máy chủ PostgreSQL trên máy Ubuntu 22.04 của mình: cài đặt từ kho lưu trữ Ubuntu APT và cài đặt từ kho lưu trữ PostgreSQL chính thức.

Bạn cũng đã học cách thiết lập PostgreSQL và chỉnh sửa một số cấu hình: postgresql.conf cho cấu hình PostgreSQL chính và tệp pg_hba.conf cho cấu hình xác thực người dùng.

Cuối cùng, bạn cũng đã học cách sử dụng cơ bản của PostgreSQL bằng cách tạo vai trò, cơ sở dữ liệu và bảng. Bạn cũng đã học cách chèn và truy xuất dữ liệu trên máy chủ PostgreSQL.