PostgreSQL (hay Postgres) là hệ quản trị cơ sở dữ liệu mạnh mẽ, hỗ trợ xử lý dữ liệu lớn với độ tin cậy cao và hiệu suất tối ưu. Nhờ khả năng quản lý transaction phức tạp và quản lý đồng thời hiệu quả mà không cần khóa việc đọc dữ liệu, PostgreSQL được nhiều ứng dụng lựa chọn. Trong bài viết này, mình sẽ hướng dẫn bạn cách cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04, cùng một số thao tác quản trị quan trọng để tối ưu hiệu suất hệ thống.
Những điểm chính
- Điều kiện cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04: Cần máy chủ Ubuntu 20.04, cấu hình firewall và tài khoản có quyền sudo – giúp bạn chuẩn bị đúng môi trường để cài đặt thành công.
- Cài đặt PostgreSQL: Hướng dẫn cài đặt thông qua apt và khởi động dịch vụ – giúp bạn thiết lập nhanh chóng PostgreSQL trên hệ thống.
- Phân quyền và xác thực PostgreSQL: Cách hoạt động của phân quyền, vai trò và xác thực ngang hàng – giúp bạn hiểu và thiết lập an ninh cho cơ sở dữ liệu.
- Quản lý người dùng và vai trò: Cách tạo và quản lý role mới – giúp bạn phân quyền hiệu quả cho từng đối tượng sử dụng.
- Tạo và quản lý cơ sở dữ liệu: Quy trình tạo mới và truy cập cơ sở dữ liệu – giúp bạn khởi tạo không gian lưu trữ dữ liệu.
- Thao tác với bảng: Cách tạo, xóa và quản lý cấu trúc bảng – giúp bạn thiết kế cơ sở dữ liệu theo nhu cầu.
- Quản lý dữ liệu: Hướng dẫn thêm, truy vấn, cập nhật và xóa dữ liệu – giúp bạn vận hành và duy trì dữ liệu hiệu quả.
- Tối ưu hóa hiệu suất: Gợi ý về việc đổi vị trí lưu trữ dữ liệu – giúp bạn cải thiện hiệu suất hệ thống cơ sở dữ liệu.
- Giới thiệu Vietnix: Thông tin về dịch vụ VPS của Vietnix – giúp bạn lựa chọn nền tảng phù hợp để triển khai PostgreSQL một cách ổn định và hiệu quả.
Điều kiện để cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04
Để cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04, bạn cần có một máy chủ Ubuntu 20.04 đã cấu hình firewall và tài khoản máy chủ có quyền sudo nhưng không phải là tài khoản root.
Để có một máy chủ linh hoạt, hỗ trợ đa dạng hệ điều hành, toàn quyền quản trị và cài đặt PostgreSQL, bạn có thể tham khảo lựa chọn dịch vụ thuê VPS tại Vietnix.
Vietnix là một trong những nhà cung cấp dịch vụ VPS tốc độ cao uy tín hàng đầu tại Việt Nam. Tại đây, bạn có thể lựa chọn gói dịch vụ VPS AMD, VPS GPU, VPS NVMe, VPS SSD, VPS Giá Rẻ, với cấu hình phù hợp với nhu cầu. Đồng thời, bạn cũng có thể cài đặt các hệ điều hành phổ biến như Ubuntu, CentOS, Debian, Windows Server,… Sở hữu VPS từ Vietnix, bạn tự do quản trị và cài đặt các phần mềm, ứng dụng trên máy chủ của mình, bao gồm cả PostgreSQL.
Bước 1: Cài đặt PostgreSQL
Các kho lưu trữ mặc định của Ubuntu chứa các package Postgres, vì vậy bạn có thể cài đặt các package này bằng hệ thống package apt
.
Đầu tiên, thực hiện cập nhật hệ thống bằng câu lệnh:
sudo apt update
Sau đó, cài đặt package Postgres cùng với một package -contrib
có các tiện ích và chức năng bổ sung:
sudo apt install postgresql postgresql-contrib
Đảm bảo rằng dịch vụ đang chạy bằng lệnh systemctl start
:
sudo systemctl start postgresql.service
Bây giờ PostgreSQL đã được cài đặt và khởi chạy thành công, hãy xem xét cách thức hoạt động và sự khác nhau giữa PostgreSQL với các hệ thống quản lý cơ sở dữ liệu quan hệ khác mà có thể bạn đã từng sử dụng.
Bước 2: Sử dụng phân quyền trong PostgreSQL và cơ sở dữ liệu
Mặc định, Postgres sử dụng một khái niệm gọi là “roles” để xử lý xác thực và ủy quyền. Trong một vài ngữ cảnh, khái niệm này được ví tương tự như hệ thống phân quyền tài khoản trong Unix, nhưng Postgres không phân biệt giữa người dùng và nhóm người dùng, thay vào đó sử dụng “role” để thể hiện một cách linh hoạt hơn.
Khi cài đặt, Postgres được thiết lập sử dụng phương thức xác thực ngang hàng (peer authentication), có nghĩa là có liên kết các vai trò của Postgres với tài khoản hệ thống UNIX/Linux phù hợp. Nếu một vai trò tồn tại trong Postgres, tên người dùng Unix/Linux có cùng tên có thể đăng nhập với vai trò đó.
Trong quá trình cài đặt đã tạo một tài khoản người dùng có tên Postgres được cấp quyền Postgres mặc định. Bạn có thể đăng nhập vào tài khoản đó để sử dụng Postgres.
Có một vài cách để sử dụng tài khoản này để 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ủ của bạn bằng câu lệnh:
sudo -i -u postgres
Bây giờ bạn có thể truy cập giao diện dòng lệnh PostgreSQL một cách nhanh chóng bằng câu lệnh:
psql
Từ đó, bạn có thể tự do tương tác với hệ thống quản lý cơ sở dữ liệu khi cần thiết.
Thoát khỏi giao diện dòng lệnh PostgreSQL bằng cách gõ:
\q
Thao tác này sẽ đưa bạn trở lại giao diện dòng lệnh postgres
Linux.
Truy cập Postgres prompt mà không cần chuyển đổi tài khoản
Bạn có thể chạy lệnh bạn muốn trực tiếp với tài khoản Postgres bằng sudo
.
Ví dụ như bạn được hướng dẫn truy cập Postgres prompt bằng cách chuyển sang người dùng postgres và sau đó chạy psql
để mở Postgres prompt. Bạn có thể làm điều này trong một bước bằng cách chạy lệnh psql
đơn lẻ với tư cách là người dùng Postgres với sudo như sau:
sudo -u postgres psql
Câu lệnh này giúp bạn đăng nhập trực tiếp vào Postgres mà không cần bash
shell trung gian ở giữa.
Tương tự, bạn có thể thoát khỏi phiên làm việc Postgres bằng cách gõ:
\q
Trong các trường hợp thực tế, một tài khoản có thể được phần quyền nhiều vai trò cụ thể. Để biết được làm thế nào để cấu hình như vậy hay theo dõi các bước cấu hình bên dưới.
Bước 3: Tạo một Role mới
Thực tế, bạn chỉ có vai trò postgres được cấu hình trong cơ sở dữ liệu. Bạn có thể tạo role mới từ dòng lệnh bằng lệnh createrole
. Cờ --interactive
sẽ nhắc bạn nhập tên của role mới và cũng hỏi xem vai trò đó có quyền siêu người dùng 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:
createuser --interactive
Thay vào đó, bạn có thể thêm sudo
cho câu lệnh mà không phải chuyển đổi từ tài khoản thường sang tài khoản khác có quyền bằng câu lệnh:
sudo -u postgres createuser --interactive
Tập lệnh sẽ hỏi bạn tên role mới và có cấp quyền siêu người dùng không. Dựa vào đó thực hiện các lệnh Postgres chính xác để tạo người dùng theo yêu cầu.
Output
Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
Bạn có thể tạo chi tiết hơn khi thêm một số cờ bổ sung. Kiểm tra danh sách các tùy chọn bằng cách xem hướng dẫn qua câu lệnh:
man createuser
Lúc này, Postgres hiện thêm người dùng mới thành công, nhưng chưa gán quyền thao tác với bất kỳ cơ sở dữ liệu nào. Bước 4 sẽ mô tả quá trình này.
Bước 4: Tạo một cơ sở dữ liệu mới
Một giả định rằng, khi đăng nhập vào hệ thống với vai trò nào thì sẽ có quyền truy cập cơ sở dữ liệu có cùng tên với vai trò đó.
Điều này có nghĩa là nếu người dùng bạn tạo ở bước 3 được gọi là Sammy, vai trò đó sẽ cố gắng kết nối với cơ sở dữ liệu còn được gọi là “Sammy” theo mặc định. Bạn cũng có thể tạo cơ sở dữ liệu thích hợp với lệnh createdb
.
Nếu bạn đã đăng nhập thành công vào Postgres, bạn có thể tạo một cơ sở dữ liệu với lệnh sau:
createdb sammy
Thay vào đó, bạn có thể sử dụng sudo
cho lệnh mà không cần chuyển đổi qua lại từ tài khoản thông thường của mình:
sudo -u postgres createdb sammy
Giúp đảm bảo sự linh hoạt để tạo cơ sở dữ liệu khi cần thiết.
Bước 5: Mở Postgres Prompt với Role mới
Để đăng nhập bằng cách xác thực ngang hàng, bạn sẽ cần một người dùng Linux có cùng tên với cơ sở dữ liệu và Role Postgres của bạn.
Nếu bạn không có sẵn Linux user phù hợp, bạn có thể tạo một user mới bằng lệnh adduser
. Bạn sẽ phải thực hiện tạo mới user bằng tài khoản có quyền sudo
mà không phải root của mình (nghĩa là không đăng nhập với tư cách người dùng postgres):
sudo adduser sammy
Lúc này, tài khoản mới này đã được tạo, bạn có thể chuyển đổi và kết nối với cơ sở dữ liệu bằng cách chạy các câu lệnh sau:
sudo -i -u sammy
psql
Hoặc bạn có thể viết cùng trên một dòng:
sudo -u sammy psql
Giả sử rằng tất cả các thành phần đã được cấu hình đúng thì lệnh này sẽ giúp bạn tự động đăng nhập vào Postgres Prompt
Nếu bạn muốn tài khoản của mình kết nối với cơ sở dữ liệu khác, bạn có thể làm bằng cách chỉ định cơ sở dữ liệu mong muốn như sau:
psql -d postgres
Khi đó đã đăng nhập thành công, bạn có thể kiểm tra thông tin kết nối hiện tại bằng cách nhập:
\conninfo
Bạn có thể nhận được kết quả như sau:
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
Điều này hữu ích kho bạn đang kết nối với cơ sở dữ liệu không mặc định hoặc với người dùng không mặc định.
Bước 6: Tạo và xóa bảng
Sau khi bạn đã biết cách kết nối với hệ thống cơ sở dữ liệu PostgreSQL, bạn có thể tìm hiểu một số tác vụ quản lý Postgres cơ bản.
Cú pháp cơ bản để tạo bảng như sau:
CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);
Như bạn có thể thấy, các lệnh trên thực hiện nhiệm vụ đặt tên cho bảng, sau đó xác định các tên cột, loại dữ liệu và độ dài tối đa của dữ liệu. Bạn cũng có thể tùy chọn thêm các ràng buộc bảng (table constraints) cho mỗi cột.
Ví dụ, bạn có thể tạo một bảng với các giá trị như sau:
CREATE TABLE playground (
equip_id serial PRIMARY KEY,
type varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
install_date date
);
Dòng đầu tiên tạo ra một bảng tên là playground.
Cột equip_id là khóa chính, kiểu dữ liệu serial
là một số nguyên tự động tăng. Cột này cũng có ràng buộc của khóa chính PRIMARY KEY
có nghĩa là các giá trị của cột phải là duy nhất và không được null.
Hai dòng tiếp theo tạo ra các cột type
và color
, cả hai đều không được null và không được bỏ trống. Dòng tiếp theo tạo một cột location
với ràng buộc chỉ có thể là một trong tám giá trị đó. Dòng cuối cùng tạo ra một cột ngày ghi lại thời gian mà bạn đã cài đặt thiết bị đó.
Đối với hai cột equip_id
và install_date
không chỉ định độ lớn dữ liệu vì kiểu dữ liệu đó thuộc loại dữ liệu không yêu xác định cầu độ lớn hoặc ngầm định rằng kiểu dữ liệu đã bao hàm độ lớn.
Để xem bảng mới được tạo bằng câu lệnh:
\d
Output
List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+-------
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
Bảng playground được liệt kê, bên cạnh đó có một dòng khác là playground_equip_id_seq
thuộc loại trình tự (sequence
). Đây là phần trình bày của loại serial
mà bạn đã cung cấp cho cột equip_id
của mình. Điều này theo dõi số tiếp theo trong chuỗi và được tạo tự động cho các cột thuộc loại này.
Nếu bạn chỉ muốn xem danh sách bảng, bạn có thể xem bằng lệnh:
\dt
Output
List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Phần tiếp theo, sử dụng bảng vừa được tạo để thực hành quản lý dữ liệu.
Bước 7: Thêm, truy vấn và xóa dữ liệu trong bảng
Bây giờ bạn có thể chèn một vài dữ liệu vào bảng.
Ví dụ: Thêm slide và swing bằng cách gọi bảng bạn muốn thêm vào dữ liệu, đặt tên cho các cột và sau đó cung cấp dữ liệu cho từng cột như sau:
INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');
Bạn sẽ phải lưu ý một vài điều khi nhập dữ liệu để tránh các lỗi thông thường.
Đầu tiên, không để tên các cột trong dấu ngoặc đơn, nhưng ngược lại các giá trị cột mà bạn nhập cần đặt trong dấu ngoặc đơn.
Một điều khác cần lưu ý là bạn không nhập cần giá trị cho cột equip_id
do giá trị cột này được tạo tự động bất cứ khi nào bạn thêm một hàng mới vào bảng.
Lấy thông tin bạn đã thêm bằng cách nhập:
SELECT * FROM playground;
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
1 | slide | blue | south | 2017-04-28
2 | swing | yellow | northwest | 2018-08-16
(2 rows)
Bạn có thể thấy rằng dữ liệu của bạn đã được thêm thành công và tất cả các dữ liệu khác của bạn đã được tổ chức một cách chính xác.
Nếu slide không còn tồn tại nữa và bạn muốn xóa khỏi cơ sở dữ liệu của mình bằng cách gõ câu lệnh sau:
DELETE FROM playground WHERE type = 'slide';
Bây giờ, xem lại các dữ liệu trong bảng:
SELECT * FROM playground;
Output
equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Có thể thấy rằng slide
đã được xóa khỏi bảng thành công.
Bước 8: Thêm và xóa cột khỏi bảng
Sau khi tạo một bảng, bạn có thể sửa đổi bằng cách thêm hoặc bớt các cột.
Thực hiện thêm một cột last_maint để hiển thị lần bảo trì cuối cùng cho từng thiết bị bằng cách nhập:
ALTER TABLE playground ADD last_maint date;
Xem lại thông tin bảng của bạn, bạn 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 vào:
SELECT * FROM playground;
Output
equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Nếu bạn thấy rằng đội ngũ công việc của bạn 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 gõ:
ALTER TABLE playground DROP last_maint;
Câu lệnh này sẽ xóa cột last_maint và bất kỳ giá trị nào được tìm thấy trong cột đó và sẽ không ảnh hưởng tới các cột dữ liệu khác.
Bước 9: Cập nhật dữ liệu trong bảng
Đến đây, bạn đã biết được cách thêm dữ liệu vào bảng và cách xóa chúng nhưng chưa bao gồm cách sửa đổi các dữ liệu hiện có.
Bạn có thể cập nhật các giá trị của một bản ghi dữ liệu hiện có bằng cách truy vấn cho bản ghi bạn muốn và đặt giá trị cột thành giá trị mới mà bạn mong muốn.
Bạn có thể truy vấn cho bản ghi có loại là swing
(điều này sẽ khớp với mọi type
là swing
có trong bảng) và thay đổi thành màu đỏ bằng câu lệnh.
UPDATE playground SET color = 'red' WHERE type = 'swing';
Bạn có thể kiểm tra thao tác đã thành công hay chưa bằng cách truy vấn lại dữ liệu:
SELECT * FROM playground;
Output
equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2018-08-16
(1 row)
Như bạn có thể thấy thiết bị có loại là swing đã được thay đổi màu sắc thành màu đỏ.
Ngoài ra, đổi vị trí thư mục lưu trữ dữ liệu của PostgreSQL trên Ubuntu 20.04 cũng là một bước quan trọng để tối ưu hóa hiệu suất của cơ sở dữ liệu, vì việc tối ưu hóa vị trí lưu trữ dữ liệu của PostgreSQL có thể giúp nâng cao hiệu suất của hệ thống cơ sở dữ liệu của bạn trên Ubuntu 20.04.
Vietnix – Đơn vị cho thuê VPS chất lượng cao cho doanh nghiệp
Vietnix là đơn vị cho thuê dịch vụ VPS uy tín với nhiều năm kinh nghiệm trong lĩnh vực hosting và máy chủ ảo. Vietnix cam kết mang đến cho khách hàng những giải pháp VPS tốc độ cao, ổn định vượt trội, đáp ứng mọi nhu cầu từ cá nhân đến doanh nghiệp.
Các gói VPS tại Vietnix đều được đánh giá có tốc độ nhanh, độ ổn định và bảo mật cao, được sao lưu dữ liệu định kỳ, đảm bảo an toàn. Ngoài ra, bất cứ khi nào bạn có thắc mắc hay vấn đề cần hỗ trợ, đội ngũ kỹ thuật của Vietnix cũng luôn sẵn sàng hỗ trợ bạn 24/7. Liên hệ ngay với Vietnix để được tư vấn chi tiết.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website:https://vietnix.vn/
Như vậy, bài viết đã hướng dẫn bạn cách cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04. Từ việc cài đặt ban đầu, đến các thao tác quản trị cơ bản, hy vọng những kiến thức này sẽ giúp bạn tự tin triển khai và vận hành PostgreSQL cho các ứng dụng của mình. Việc nắm vững các thao tác này sẽ là nền tảng vững chắc để bạn xây dựng và phát triển các ứng dụng hiệu quả và ổn định. Chúc bạn thành công!
Mọi người cũng đọc thêm:
Hướng dẫn sử dụng cơ sở dữ liệu PostgreSQL với Node.js trên Ubuntu 20.04
Hướng dẫn sử dụng PostgreSQL với Ruby on Rails trên Ubuntu 20.04
Cách sử dụng PostgreSQL với ứng dụng Django trên Ubuntu 20.04
Hướng dẫn cài đặt và sử dụng Docker Compose trên Ubuntu 20.04
Hướng dẫn cách cài đặt và sử dụng PostgreSQL trên CentOS 7