Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 18.04
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ó là một lựa chọn phổ biến cho nhiều dự án lớn và nhỏ và có ưu điểm là 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 version VPS Ubuntu 18.04 và cung cấp hướng dẫn quản trị database cơ bản.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần một server Ubuntu 18.04 đã được cấu hình theo hướng dẫn Cài đặt server ban đầu cho Ubuntu 18.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
.
Vì đây là lần đầu tiên bạn sử dụng apt
trong phiên này, hãy cập nhật OS local của bạn. 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 update
- 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ệ quản trị database tương tự 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ý trong 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
Bây giờ, bạn có thể truy cập dấu nhắc Postgres ngay lập tức bằng lệnh :
- psql
Thao tác này sẽ giúp bạn đăng nhập vào dấu nhắc PostgreSQL và từ đây bạn có thể tự do tương tác với hệ quản trị database ngay lập tức.
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ư :
- createdb 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:
- sudo -u postgres createdb 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 ):
- sudo adduser 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 :
- sudo -i -u sammy
- psql
Hoặc, bạn có thể thực hiện với một lệnh :
- sudo -u sammy psql
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:
- psql -d 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.
Đầu tiên, hãy tạo một bảng để lưu trữ một số dữ liệu. Ví dụ, một bảng mô tả một số thiết bị playground .
Cú pháp cơ bản cho lệnh này 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 một bảng đơn giản 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 );
Các lệnh này sẽ tạo một bảng kiểm kê thiết bị playground . Điều này bắt đầu với một ID thiết bị, thuộc loại serial
. Kiểu dữ liệu này là một số nguyên tự động tăng dần. Bạn cũng đã cung cấp cho cột này ràng buộc của primary key
nghĩa là các giá trị phải là duy nhất và không được rỗng.
Đối với hai trong số các cột ( equip_id
và install_date
), các lệnh không chỉ định độ dài trường. Điều này là do một số loại cột không yêu cầu độ dài đã đặt vì độ dài được xác định bởi kiểu .
Hai lệnh tiếp theo tạo các cột cho type
thiết bị và color
tương ứng, mỗi cột không được để trống. Lệnh sau các lệnh này tạo một cột location
và tạo một ràng buộc yêu cầu giá trị phải là một trong tám giá trị có thể. Lệnh cuối cùng tạo một cột ngày ghi lại ngày bạn đã lắp đặt thiết bị.
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)
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 một hàng mới trong bảng được tạo.
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)
Bạn thấy slide đã không còn trong 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ó để thêm hoặc bớt các cột tương đối dễ dàng. 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 vào):
- SELECT * FROM playground;
Output equip_id | type | color | location | install_date | last_maint ----------+-------+--------+-----------+--------------+------------ 2 | swing | yellow | northwest | 2018-08-16 | (1 row)
Việc xóa một cột cũng đơn giản như vậy. 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 “đỏ”. Đ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 | 2010-08-16 (1 row)
Như bạn thấy , slide của bạn hiện đã được đăng ký là có màu đỏ.
Kết luận
Đến đây bạn đã được cài đặt với PostgreSQL trên server Ubuntu 18.04 của bạn . Tuy nhiên, vẫn còn nhiều điều phải học với Postgres. Dưới đây là một số hướng dẫn khác bao gồm cách sử dụng Postgres:
- So sánh các hệ quản trị database quan hệ
- Tìm hiểu cách tạo và quản lý bảng với Postgres
- Trở nên tốt hơn trong việc quản lý role và quyền
- Tạo truy vấn với Postgres với Chọn
- Tìm hiểu cách bảo mật PostgreSQL
- Tìm hiểu cách backup database Postgres
Các tin liên quan
Cách sử dụng tìm kiếm toàn văn bản trong PostgreSQL trên Ubuntu 16.042017-06-15
Cách bảo mật PostgreSQL chống lại các cuộc tấn công tự động
2017-01-24
Cách sử dụng Postgresql với Ứng dụng Django của bạn trên Debian 8
2016-12-22
Cách di chuyển thư mục dữ liệu PostgreSQL đến vị trí mới trên Ubuntu 16.04
2016-07-27
Cách sử dụng PostgreSQL với Ứng dụng Django của bạn trên Ubuntu 16.04
2016-05-18
Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 16.04
2016-05-04
Cách backup, khôi phục và di chuyển database PostgreSQL với Barman trên CentOS 7
2016-01-20
Cài đặt postgresql 9.4 trên Debian 8
2015-06-11
Cách sử dụng PostgreSQL với Ứng dụng Django của bạn trên Ubuntu 14.04
2015-03-25
Cách sử dụng PostgreSQL với Ứng dụng Django của bạn trên CentOS 7
2015-03-25