Các tính năng và trường hợp sử dụng của PostgreSQL
PostgreSQL là Hệ thống quản lý cơ sở dữ liệu quan hệ đối tượng (DBMS) mã nguồn mở. Đó là một hệ thống phân tích và quản lý cơ sở dữ liệu nâng cao chủ yếu được sử dụng cho các nền tảng Thương mại điện tử, giao dịch thanh toán và các giải pháp lưu trữ dữ liệu khác nhau. Nó đã tồn tại hơn 30 năm và thường xuyên được cập nhật hàng năm, hỗ trợ các hàm SQL khác nhau như trình kích hoạt, các loại và hàm do người dùng xác định, truy vấn phụ, v.v.
PostgreSQL là một trong những cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới. Nó phù hợp cho một số trường hợp sử dụng sản xuất và phát triển. Nó cung cấp nhiều lợi thế như tăng cường hiệu suất phân vùng và truy vấn (đặc biệt là trên các tập dữ liệu lớn), cải tiến B-tree để sử dụng không gian tối ưu, thống kê giá trị chung nhất (MCV) nhiều cột, biểu thức bảng phổ biến với nội tuyến truy vấn và kiểm soát tổng kiểm tra.
Vài lời về Ubuntu 20.04 trên DigitalOcean
Ubuntu là một hệ điều hành máy tính để bàn mã nguồn mở phổ biến. Ubuntu 20.04 bao gồm nhiều tính năng tiên tiến, chẳng hạn như một công cụ để quản lý ảnh chụp nhanh ZFS, một vết sưng hạt nhân chính và các cải tiến bảo mật. Nền tảng đám mây DigitalOcean cung cấp cơ sở hạ tầng mạnh mẽ và tính khả dụng toàn cầu để phát triển, quản lý và mở rộng quy mô các ứng dụng trên đám mây. Với các sản phẩm máy tính, lưu trữ, cơ sở dữ liệu và mạng, các nhà phát triển có thể xây dựng các ứng dụng web và di động, dịch vụ phát trực tuyến, trò chơi, giải pháp SaaS, v.v. Cung cấp các tính năng như mạng riêng tư được chia sẻ, công cụ DevOps một cú nhấp chuột và ổ cứng SSD, DigitalOcean là sự lựa chọn linh hoạt, an toàn và đơn giản cho các giải pháp quan trọng.
Hướng dẫn này cung cấp hướng dẫn chi tiết về cách cài đặt PostgreSQL trên DigitalOcean Ubuntu 20.04. Không cần thêm lời khuyên nào nữa, hãy bắt đầu!
|
Điều kiện tiên quyết để cài đặt PostgreSQL
Trước khi chúng tôi đi sâu vào cài đặt thực tế của PostgreSQL 12 trên DigitalOcean Ubuntu 20.04, bạn cần đảm bảo hệ thống của mình đáp ứng các điều kiện tiên quyết sau.
- Máy chủ phải có ít nhất một tường lửa UFW cơ bản để đảm bảo rằng chỉ cho phép các kết nối với một số dịch vụ nhất định.
- Hệ thống phải được cập nhật cho phiên bản máy chủ mới và khởi động lại. Để làm điều đó, hãy sử dụng các lệnh sau:
-
sudo apt update && sudo apt upgrade –y
-
sudo reboot
-
Cài đặt PostgreSQL trên Ubuntu 20.04 DigitalOcean
Bạn có thể cài đặt PostgreSQL 12 bằng cách sử dụng kho lưu trữ chính thức / mặc định của Ubuntu 20.04 bằng hệ thống trình quản lý gói apt. Trước khi thực hiện việc này, bạn nên làm mới chỉ mục gói cục bộ của máy chủ của mình (xem điều kiện tiên quyết ở trên).
Kho lưu trữ chứa các gói khác nhau (bao gồm các tiện ích bổ sung của bên thứ 3) như:
- postgresql-client
- postgresql
- libpq-dev
- postgresql-server-dev
- gói pgadmin
Sau đó, cài đặt gói PostgreSQL 12 hoàn chỉnh cùng với mô-đun postgresql-Contrib cung cấp các tiện ích và chức năng bổ sung. Điều này có thể được cài đặt bằng cách chạy lệnh sau:
sudo apt install postgresql postgresql-contrib –y
Sau đó, khởi động dịch vụ PostgreSQL khi khởi động lại hệ thống bằng cách chạy lệnh sau:
sudo systemctl start postgresql
Để tự động khởi động dịch vụ PostgreSQL khi khởi động hệ thống, hãy chạy:
sudo systemctl enable postgresql
Xác minh rằng dịch vụ PostgreSQL đang chạy như mong đợi bằng cách chạy trạng thái systemctl postgresql:
sudo systemctl status postgresql
Thao tác này sẽ trả về trạng thái của dịch vụ PostgreSQL và sẽ hiển thị đang hoạt động, tương tự như ảnh chụp màn hình bên dưới.
Tùy chỉnh Khởi tạo PostgreSQL
Sau khi cài đặt, một cụm cơ sở dữ liệu có thể được tạo với sự trợ giúp của lệnh initdb. Lệnh initdb phải được chạy từ bên trong người dùng cơ sở dữ liệu chứ không phải từ người dùng root. Người dùng root có thể tạo một thư mục trống có thể được chọn (lệnh thay đổi chủ sở hữu) bởi người dùng postgres. Thư mục này sẽ chứa dữ liệu dưới dạng một mẫu, sẽ được sao chép vào tất cả các cơ sở dữ liệu theo mặc định. Từ người dùng postgres, lệnh sau có thể được gọi với tùy chọn và tên thư mục thích hợp.
initdb [option...] [ --pgdata | -D ] directory
Lệnh initdb có thể được chạy với tư cách người dùng đã xác thực với các cờ khác nhau để tạo mẫu db trong một thư mục nhất định.
Dưới đây là danh sách các cờ cụ thể được cung cấp như trong ảnh chụp màn hình ở trên:
-
--encoding UTF8
(nó có thể là bất kỳ dựa trên Ngôn ngữ).- Cờ mã hoá đặt mã hoá của mẫu cơ sở dữ liệu. Tất cả các cơ sở dữ liệu được tạo bằng cách sử dụng mẫu đó cũng sẽ sử dụng cùng một phương pháp mã hóa trừ khi được chỉ định riêng. Có nhiều phương pháp mã hóa cho các ngôn ngữ khác nhau.
-
--pgdata test
(cờ này tạo một thư mục có tên “test” để lưu trữ dữ liệu cơ sở dữ liệu).- Chỉ định thư mục nơi cụm cơ sở dữ liệu lưu dữ liệu của nó.
-
-A peer
(điều này chỉ định phương thức xác thực được sử dụng trong tệp pg_hba.conf).- Chỉ định phương thức xác thực mặc định cho người dùng cục bộ được sử dụng trong pg_hba.conf (máy chủ lưu trữ và các dòng cục bộ). initdb sẽ điền trước các mục nhập pg_hba.conf bằng phương pháp xác thực được chỉ định để không sao chép cũng như các kết nối sao chép.
-
-k
(sử dụng data-checksum để kiểm tra lỗi I / O)- Chỉ định tổng kiểm tra dữ liệu trên tất cả các trang dữ liệu để phát hiện lỗi của hệ thống I / O. Tuy nhiên, điều này làm chậm tốc độ xử lý cơ sở dữ liệu).
Bảo mật Cơ sở dữ liệu PostgreSQL của bạn
Trong quá trình cài đặt, một người dùng mới có tên là postgres được tạo tự động theo mặc định. Người dùng này có đầy đủ các đặc quyền hệ thống, vì vậy điều quan trọng là phải bảo mật tài khoản người dùng bằng mật khẩu mạnh.
sudo passwd postgres
Bây giờ chuyển sang tài khoản người dùng postgres. Người dùng phải có đặc quyền sudo.
sudo su – postgres
Phiên bản PostgreSQL có thể được xác nhận bằng cách chạy
psql -c "SELECT version();"
Để thay đổi mật khẩu của postgres
lệnh sử dụng của người dùng:
psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
Lưu ý:Mật khẩu này chỉ áp dụng khi postgres
người dùng kết nối với PostgreSQL qua mạng.
Để truy cập cơ sở dữ liệu Postgres, bạn có thể đăng nhập vào cơ sở dữ liệu PostgreSQL bằng:
psql postgres
Theo mặc định, PostgreSQL không yêu cầu xác thực mật khẩu từ người dùng hệ thống cục bộ để truy cập cơ sở dữ liệu. Đây được gọi là "xác thực ngang hàng". Tuy nhiên, xác thực mật khẩu có thể được bật từ trong pg_hba.conf
tệp.
Để chỉnh sửa pg_hba.conf
này tệp, sử dụng \q
lệnh để thoát khỏi trình bao postgres và nhập vào trình bao Linux. Từ bên trong trình bao Linux, hãy chỉnh sửa pg_hba.conf
tập tin. Đảm bảo bạn đã sao lưu trước khi chỉnh sửa tệp.
sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
Sau đó, chỉnh sửa tệp bằng trình chỉnh sửa nano,
nano /etc/postgresql/12/main/pg_hba.conf
Tìm dòng cục bộ trong “Chỉ kết nối ổ cắm miền Unix” và thay đổi METHOD
thuộc tính từ peer
thành md5
.
Tải lại dịch vụ PostgreSQL để áp dụng các cài đặt mới.
sudo systemctl reload postgresql
Xin lưu ý ở đây rằng có hai người dùng với tên postgres; một người là người dùng Linux để kết nối và truy cập Cơ sở dữ liệu và người kia là người dùng cơ sở dữ liệu được sử dụng để thực hiện các vai trò quản trị bên trong cơ sở dữ liệu.
Định cấu hình Cơ sở dữ liệu PostgreSQL của bạn
PostgreSQL có thể được định cấu hình theo cách thủ công cho các địa chỉ và cổng lắng nghe bằng cách thay đổi các tham số bắt buộc trong tệp postgresql.conf.
Theo mặc định, cổng PostgreSQL 5432 được sử dụng và lắng nghe trên máy chủ cục bộ. Điều này có thể được thay đổi bằng cách chỉnh sửa tệp cấu hình.
sudo nano /etc/postgresql/12/main/postgresql.conf
Dịch vụ sẽ được khởi động lại sau khi thực hiện bất kỳ thay đổi nào.
sudo systemctl restart postgresql
Tạo vai trò mới trong PostgreSQL 12
Xác thực và ủy quyền trong PostgreSQL 12 xảy ra thông qua khái niệm "vai trò". Ở đây, vai trò là một thuật ngữ linh hoạt dùng để chỉ cả người dùng và nhóm.
Đăng nhập vào người dùng postgres bằng cách sử dụng lệnh sau:
sudo su postgres
Các vai trò mới có thể được tạo tương tác từ dòng lệnh với lệnh createrole –interactive. Tại đây, việc sử dụng cờ tương tác sẽ tạo lời nhắc cho tên của vai trò mới và liệu vai trò này có nên được chỉ định quyền cấp trên người dùng hay không.
Người dùng mới có thể được tạo với một vai trò mới bên ngoài trình bao postgresql người dùng như:
createuser –interactive
Đầu ra của lệnh người dùng mới sẽ trông giống như thế này.
Tạo và xóa cơ sở dữ liệu trong Máy chủ PostgreSQL của bạn
Trong PostgreSQL 12, khi một vai trò mới được tạo, một cơ sở dữ liệu mới có cùng tên phải tồn tại vì vai trò cố gắng kết nối với cơ sở dữ liệu theo mặc định. Vì vậy, như trong phần trước, nơi người dùng liam được tạo, một cơ sở dữ liệu có tên đó có thể được tạo bằng cách sử dụng lệnh sau:
createdb liam
Trong PostgreSQL 12, có nhiều đường dẫn để tạo cơ sở dữ liệu theo yêu cầu:
- Khi đăng nhập từ tài khoản postgres:
postgres@server:~$ createdb liam
- Sử dụng
sudo
,sudo –u postgres created liam
Để xóa cơ sở dữ liệu, chúng ta có thể sử dụng
dropdb liam
Mở lời nhắc của Postgres với vai trò mới
Người dùng Linux có cùng tên với cơ sở dữ liệu Postgres và vai trò có thể được tạo để đăng nhập với xác thực dựa trên danh tính.
Người dùng Linux có thể được tạo (nếu chưa tồn tại) từ dòng lệnh bằng cách nhập:
sudo adduser noah
Sau khi người dùng được tạo, người dùng có thể được đăng nhập bằng cách sử dụng lệnh sau;
sudo -u noah psql
Cơ sở dữ liệu hiện tại và thông tin người dùng có thể được truy cập bằng cách sử dụng;
\conninfo
Quản lý PostgreSQL
Tạo và xóa bảng
Lệnh SQL CREATE TABLE
có thể được sử dụng để tạo bất kỳ bảng nào trong cơ sở dữ liệu. Danh sách các cột và kiểu dữ liệu cho mỗi cột phải được chỉ định trong lệnh.
CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
Lệnh này sẽ tạo một bảng có tên “khách hàng”. Cột đầu tiên sẽ chứa ID khách hàng của kiểu số nguyên. Cột thứ hai và thứ ba có kiểu ký tự và sẽ chứa họ và tên của khách hàng với độ dài tối đa là 80 ký tự.
Bạn có thể nhìn thấy bảng mới này bằng cách nhập \d
.
Có thể xóa bảng bằng cách nhập:
Khách hàng DROP TABLE customers;
Chèn, chọn và xóa dữ liệu trong bảng
Dữ liệu được thêm vào các bảng PostgreSQL dưới dạng hàng. Mỗi hàng đại diện cho một tập dữ liệu riêng biệt. Dữ liệu có thể được chèn vào hàng bằng cách sử dụng lệnh INSERT INTO. Theo sau tên lệnh là “tên bảng” (trong ví dụ sau là khách hàng), từ khóa VALUES, danh sách các giá trị được phân tách bằng dấu phẩy.
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
Nội dung của bảng có thể được xem bằng cách sử dụng lệnh SELECT.
SELECT * FROM customers;
Có thể xóa một hàng bằng cách sử dụng DELETE
yêu cầu. WHERE
từ khóa được sử dụng để chọn các hàng có điều kiện.
DELETE FROM customers WHERE last_name = 'Seller';
Để xóa tất cả các hàng, hãy nhập:
SELECT * FROM customers;
Thêm và xóa các cột từ một bảng
PostgreSQL 12 cung cấp khả năng thêm hoặc xóa các cột khỏi các bảng hiện có một cách dễ dàng.
ALTER TABLE
lệnh được sử dụng cùng với ADD
từ khóa để thêm một cột vào bảng hiện có. Trường này được đặt trống cho các hàng hiện có trong bảng.
Khách hàng ALTER TABLE customers ADD branch_id int;
Lệnh tương tự được sử dụng với DROP
từ khóa để xóa cột được chỉ định khỏi bảng.
ALTER TABLE customers DROP first_name;
Cập nhật dữ liệu trong bảng
Ngoài việc thêm và xóa các bản ghi bên trong bảng, chúng ta cũng có thể sửa đổi chúng. Điều này có thể được thực hiện bằng cách sử dụng UPDATE
yêu cầu. Chúng tôi cần chỉ định các cột cần được chỉnh sửa với các giá trị mới.
UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
Cân nhắc về Môi trường Sản xuất
PostgreSQL 12 có thể được sử dụng an toàn trong môi trường sản xuất. Cơ sở dữ liệu này ổn định đến mức không có vấn đề gì khi triển khai nó trên quy mô lớn. Để biết thêm thông tin chi tiết, vui lòng tham khảo bài viết trước của chúng tôi tại đây.
Kết luận
Hướng dẫn này đã chỉ cho bạn cách thiết lập PostgreSQL 12 trên máy chủ Ubuntu 20.04 chạy trên DigitalOcean. PostgreSQL 12 là một ứng dụng phức tạp với nhiều tính năng mới và nâng cao, chẳng hạn như cải thiện quản lý không gian của các chỉ mục B-tree tiêu chuẩn, và hỗ trợ xây dựng lại chỉ mục đồng thời và tạo chỉ mục. Phiên bản 12 cũng hỗ trợ các truy vấn WITH nội tuyến và các đối chiếu do ICU cung cấp, cải thiện việc phân vùng và cung cấp giao diện lưu trữ bảng có thể cắm được để tạo và sử dụng các phương pháp khác nhau để lưu trữ bảng.
Bây giờ bạn đã biết những điều cơ bản về thiết lập và sử dụng máy chủ PostgreSQL, tại sao không thử một giải pháp thay thế được quản lý? Với một dịch vụ được quản lý như ScaleGrid, bạn có thể hoàn thành toàn bộ quá trình thiết lập, cài đặt và cấu hình chỉ bằng một nút bấm. Bắt đầu bản dùng thử 30 ngày miễn phí của bạn ngay hôm nay và tự mình trải nghiệm! Không cần thẻ tín dụng và bạn có thể thiết lập cơ sở dữ liệu đầu tiên của mình chỉ trong vài phút.
Chúng tôi đã trình bày các kiến thức cơ bản về cài đặt ở đây và cũng cung cấp một số hướng dẫn để quản trị cơ sở dữ liệu chung. Chúng tôi hy vọng bạn thấy hướng dẫn này hữu ích.