Hướng dẫn cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04

nexsoft.vn 18/01/2024

Hệ thống quản trị cơ sở dữ liệu quan hệ là một thành phần chính của trang web và ứng dụng. Postgres hay còn gọi là Postgres cung cấp một cách có cấu trúc để lưu trữ, tổ chức và truy cập thông tin bằng ngôn ngữ truy vấn SQL. PostgreSQL có thể đảm bảo tính tin cậy cho các transaction và quản lý đồng thời mà không cần khóa việc đọc dữ liệu. Trong bài viết này, Vietnix sẽ hướng dẫn bạn cách cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04 và một số hướng dẫn quản trị cơ sở dữ liệu.

Điều kiện để cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04

Để thực hiện hướng dẫn này, 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ụ 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 có cầu hình phù hợp với nhu cầu và lựa chọn cài đặt các hệ điều hành phổ biến như Ubuntu, CentOS, Debian, Windows Server,… Sở hữu VPS 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.

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.

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:

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:

Đảm bảo rằng dịch vụ đang chạy bằng lệnh systemctl start :

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:

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:

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õ:

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:

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õ:

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:

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:

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.

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:

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:

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:

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):

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:

Hoặc bạn có thể viết cùng trên một dòng:

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:

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:

Bạn có thể nhận được kết quả như sau:

Đ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:

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:

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:

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:

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:

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:

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:

Bây giờ, xem lại các dữ liệu trong bảng:

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:

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:

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õ:

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.

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:

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.

Lời kết

Với bài hướng dẫn này, bạn có thể thiết lập được cơ sở dữ liệu với PostgreSQL trên Ubuntu server 20.04 của bạn. Nếu bạn thấy bài viết hướng dẫn cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04 hữu ích thì hãy bình luận và chia sẻ bài viết đến với nhiều người cùng đọc nhé.