Hệ quản trị database quan hệ là thành phần chính của nhiều trang web và ứng dụng. Chúng cung cấp một cách có cấu trúc để lưu trữ, sắp xếp và truy cập thông tin.
PostgreSQL , hoặc Postgres, là một hệ thống quản lý database quan hệ cung cấp việc triển khai ngôn ngữ truy vấn SQL . Nó tuân theo các tiêu chuẩn và có nhiều tính năng nâng cao như giao dịch tin cậy và đồng thời mà không cần khóa đọc.
Hướng dẫn này sẽ cài đặt Postgres trên server Ubuntu 20.04. Nó cũng cung cấp một số hướng dẫn để quản trị database chung.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần một server Ubuntu 20.04 đã được cấu hình theo hướng dẫn Cài đặt server ban đầu cho Ubuntu 20.04 của ta . Sau khi hoàn thành hướng dẫn yêu cầu này, server của bạn phải có user không phải root với quyền sudo và firewall cơ bản.
Bước 1 - Cài đặt PostgreSQL
Kho lưu trữ mặc định của Ubuntu chứa các gói Postgres, vì vậy bạn có thể cài đặt các gói này bằng cách sử dụng trình cài đặt gói apt
.
Nếu gần đây bạn chưa làm như vậy, hãy cập nhật OS local của server của bạn:
- sudo apt update
Sau đó, cài đặt gói Postgres cùng với gói -contrib
bổ sung thêm một số tiện ích và chức năng:
- sudo apt install postgresql postgresql-contrib
Bây giờ phần mềm đã được cài đặt, ta có thể xem qua cách nó hoạt động và nó có thể khác gì với các hệ thống quản lý database quan hệ khác mà bạn đã sử dụng.
Bước 2 - Sử dụng Database và Role PostgreSQL
Theo mặc định, Postgres sử dụng một khái niệm gọi là " role " để xử lý xác thực và ủy quyền. Về mặt nào đó, chúng tương tự như các account kiểu Unix thông thường, nhưng Postgres không phân biệt giữa user và group và thay vào đó thích thuật ngữ linh hoạt hơn “ role ”.
Sau khi cài đặt, Postgres được cài đặt để xác thực sử dụng ident, nghĩa là nó liên kết role Postgres với một account phù hợp với hệ thống Unix / Linux. Nếu một role tồn tại trong Postgres, tên user Unix / Linux có cùng tên có thể đăng nhập với role đó.
Quy trình cài đặt đã tạo một account user được gọi là postgres được liên kết với role Postgres mặc định. Để sử dụng Postgres, bạn có thể đăng nhập vào account đó.
Có một số cách để sử dụng account này để truy cập Postgres.
Chuyển sang Tài khoản postgres
Chuyển sang account postgres trên server của bạn bằng lệnh :
- sudo -i -u postgres
Đến đây bạn có thể truy cập dấu nhắc PostgreSQL ngay lập tức bằng lệnh :
- psql
Từ đó bạn có thể tự do tương tác với hệ quản trị database khi cần thiết.
Thoát khỏi dấu nhắc PostgreSQL bằng lệnh :
- \q
Thao tác này sẽ đưa bạn trở lại dấu nhắc lệnh postgres
Linux.
Truy cập Dấu nhắc của Postgres mà không cần chuyển đổi account
Bạn cũng có thể chạy lệnh bạn muốn với account postgres trực tiếp với sudo
.
Ví dụ, trong ví dụ trước, bạn đã thấy để truy cập dấu nhắc Postgres bằng cách chuyển sang user postgres trước tiên và sau đó chạy psql
để mở dấu nhắc Postgres. Bạn có thể thực hiện điều này trong một bước bằng cách chạy lệnh psql
duy nhất với quyền là user postgres với sudo
, như sau:
- sudo -u postgres psql
Thao tác này sẽ giúp bạn đăng nhập trực tiếp vào Postgres mà không có shell bash
trung gian ở giữa.
, bạn có thể thoát phiên Postgres tương tác bằng lệnh :
- \q
Nhiều trường hợp sử dụng yêu cầu nhiều hơn một role Postgres. Đọc tiếp để tìm hiểu cách cấu hình chúng.
Bước 3 - Tạo một role mới
Hiện tại, bạn chỉ cần cấu hình role postgres trong database . Bạn có thể tạo các role mới từ dòng lệnh bằng lệnh createrole
. Cờ --interactive
sẽ nhắc bạn về tên của role mới và cũng hỏi liệu nó có nên có quyền cấp trên user hay không.
Nếu bạn đã đăng nhập bằng account postgres , bạn có thể tạo user mới bằng lệnh :
- createuser --interactive
Thay vào đó, nếu bạn muốn sử dụng sudo
cho mỗi lệnh mà không cần chuyển từ account thông thường của bạn , hãy nhập:
- sudo -u postgres createuser --interactive
Tập lệnh sẽ nhắc bạn với một số lựa chọn và dựa trên trả lời của bạn , thực hiện các lệnh Postgres chính xác để tạo user theo thông số kỹ thuật của bạn.
OutputEnter name of role to add: sammy Shall the new role be a superuser? (y/n) y
Bạn có thể kiểm soát nhiều hơn bằng cách chuyển một số cờ bổ sung. Kiểm tra các tùy chọn bằng cách xem trang man
:
- man createuser
Cài đặt Postgres của bạn hiện đã có user mới, nhưng bạn chưa thêm bất kỳ database nào. Phần tiếp theo mô tả quá trình này.
Bước 4 - Tạo database mới
Một giả định khác mà hệ thống xác thực Postgres đưa ra theo mặc định là đối với bất kỳ role nào được sử dụng để đăng nhập, role đó sẽ có một database có cùng tên mà nó có thể truy cập.
Điều này nghĩa là nếu user bạn đã tạo trong phần cuối cùng được gọi là sammy , thì role đó sẽ cố gắng kết nối với database cũng được gọi là “sammy” theo mặc định. Bạn có thể tạo database thích hợp bằng lệnh createdb
.
Nếu bạn đăng nhập bằng account postgres , bạn sẽ nhập thông tin như :
sammy
Thay vào đó, nếu bạn muốn sử dụng sudo
cho mỗi lệnh mà không chuyển từ account thông thường của bạn , bạn sẽ nhập:
sammy
Tính linh hoạt này cung cấp nhiều đường dẫn để tạo database khi cần thiết.
Bước 5 - Mở Dấu nhắc Postgres với role mới
Để đăng nhập bằng ident
xác thực dựa, bạn cần user linux với tên giống như role Postgres của bạn và database .
Nếu bạn không có sẵn user Linux phù hợp, bạn có thể tạo một user bằng lệnh adduser
. Bạn sẽ phải thực hiện việc này từ account không phải root của mình với các quyền sudo
(nghĩa là không đăng nhập với quyền user postgres ):
sammy
Khi account mới này khả dụng, bạn có thể chuyển đổi và kết nối với database bằng lệnh :
sammy
Hoặc, bạn có thể thực hiện với một lệnh :
sammy
Lệnh này sẽ tự động đăng nhập cho bạn, giả sử rằng tất cả các thành phần đã được cấu hình đúng.
Nếu bạn muốn user của bạn kết nối với một database khác, bạn có thể thực hiện bằng cách chỉ định database như sau:
postgres
Sau khi đăng nhập, bạn có thể kiểm tra thông tin kết nối hiện tại của bạn bằng lệnh :
- \conninfo
OutputYou are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
Điều này hữu ích nếu bạn đang kết nối với database không mặc định hoặc với user không mặc định.
Bước 6 - Tạo và xóa bảng
Đến đây bạn đã biết cách kết nối với hệ thống database 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 thấy , các lệnh này đặt tên cho bảng, sau đó xác định các cột cũng như loại cột và độ dài tối đa của trường dữ liệu . Bạn cũng có thể tùy chọn thêm các ràng buộc bảng cho mỗi cột.
Bạn có thể tìm hiểu thêm về cách tạo và quản lý bảng trong Postgres tại đây.
Với mục đích demo , hãy tạo bảng 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
- );
Lệnh này sẽ tạo một bảng kiểm kê thiết bị playground . Cột đầu tiên trong bảng sẽ chứa số ID thiết bị của loại serial
, là một số nguyên tự động tăng dần. Cột này cũng có ràng buộc là PRIMARY KEY
nghĩa là các giá trị bên trong nó phải là duy nhất và không được rỗng.
Hai dòng tiếp theo tạo các cột cho type
thiết bị và color
tương ứng, không được để trống cột nào. Dòng sau những dòng này tạo cột location
cũng như một ràng buộc yêu cầu giá trị phải là một trong tám giá trị có thể. Dòng cuối cùng tạo một cột date
ghi lại ngày bạn lắp đặt thiết bị.
Đối với hai trong số các cột ( equip_id
và install_date
), lệnh không chỉ định độ dài trường. Lý do cho điều này là một số kiểu dữ liệu không yêu cầu độ dài đã đặt vì độ dài hoặc định dạng được ngụ ý.
Bạn có thể xem bảng mới của bạn bằng 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ủa bạn ở đây, nhưng cũng có một thứ được gọi là playground_equip_id_seq
thuộc loại sequence
. Đây là một biểu tượng của serial
kiểu mà bạn đã cho bạn equip_id
cột. Điều này giúp 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 bảng mà không có thứ tự , có thể chạy lệnh:
- \dt
Output List of relations Schema | Name | Type | Owner --------+------------+-------+------- public | playground | table | sammy (1 row)
Với một bảng đã sẵn sàng, hãy sử dụng nó để 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
Đến đây bạn đã có một bảng, bạn có thể chèn một số dữ liệu vào đó. Ví dụ: thêm một slide và xích đu bằng cách gọi bảng bạn muốn thêm vào, đặt tên cho các cột và sau đó cung cấp dữ liệu cho mỗi 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 cần lưu ý khi nhập dữ liệu để tránh một số trường hợp treo máy thường gặp. Đối với một, không đặt tên cột trong dấu ngoặc kép, nhưng giá trị cột mà bạn nhập cần có dấu ngoặc kép.
Một điều nữa cần lưu ý là bạn không nhập giá trị cho cột equip_id
. Điều này là do điều này được tạo tự động khi nào bạn thêm một hàng mới vào bảng.
Truy xuất thông tin bạn đã thêm bằng lệnh :
- 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)
Ở đây, bạn có thể thấy rằng bạn equip_id
đã được lấp đầy trong thành công và rằng 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 trên playground bị hỏng và bạn phải xóa nó, bạn cũng có thể xóa hàng khỏi bảng của bạn bằng lệnh :
- DELETE FROM playground WHERE type = 'slide';
Truy vấn lại bảng:
- SELECT * FROM playground;
Output equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2018-08-16 (1 row)
Lưu ý hàng slide
không còn là một phần của bảng.
Bước 8 - Thêm và xóa các cột khỏi bảng
Sau khi tạo bảng, bạn có thể sửa đổi nó bằng cách thêm hoặc bớt cột. Thêm một cột để hiển thị lần bảo dưỡng cuối cùng cho từng phần thiết bị bằng lệnh :
- ALTER TABLE playground ADD last_maint date;
Nếu bạn 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:
- 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 group làm 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 lệnh :
- ALTER TABLE playground DROP last_maint;
Thao tác này sẽ xóa cột last_maint
và bất kỳ giá trị nào được tìm thấy bên trong nó, nhưng giữ nguyên tất cả các dữ liệu khác.
Bước 9 - Cập nhật dữ liệu trong bảng
Lúc này, bạn đã học cách thêm bản ghi vào bảng và cách xóa chúng, nhưng hướng dẫn này chưa trình bày cách sửa đổi các giá trị đã nhập .
Bạn có thể cập nhật các giá trị của mục nhập hiện có bằng cách truy vấn bản ghi bạn muốn và đặt cột thành giá trị bạn muốn sử dụng. Bạn có thể truy vấn bản ghi swing
(điều này sẽ trùng với mọi swing trong bảng của bạn) và thay đổi màu của nó thành red
. Điều này có thể hữu ích nếu bạn đã sơn cho xích đu một công việc:
- UPDATE playground SET color = 'red' WHERE type = 'swing';
Bạn có thể xác minh thao tác đã thành công 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 thấy , slide bây giờ được đăng ký là có màu đỏ.
Post a Comment