Thứ tư, 04/05/2016 | 00:00 GMT+7

Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 16.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.

Trong hướng dẫn này, ta sẽ trình bày cách cài đặt Postgres trên version VPS Ubuntu 16.04 và xem qua một số cách cơ bản để sử dụng nó.

Cài đặt

Các repository mặc định của Ubuntu chứa các gói Postgres, vì vậy ta có thể cài đặt các gói này dễ dàng bằng cách sử dụng trình cài đặt gói apt .

Vì đây là lần đầu tiên ta sử dụng apt trong phiên này, ta cần cập nhật OS local của bạn . Sau đó, ta có thể cài đặt gói Postgres và gói -contrib bổ sung một số tiện ích và chức năng bổ sung:

  • sudo apt-get update
  • sudo apt-get install postgresql postgresql-contrib

Bây giờ phần mềm của ta đã được cài đặt, ta có thể xem lại cách nó hoạt động và nó có thể khác gì với các hệ thống quản lý database tương tự mà bạn đã sử dụng.

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 để sử dụng xác thực 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 sẽ có thể đăng nhập với role đó.

Có một số cách để sử dụng account này để truy cập Postgres.

Chuyển sang Tài khoản postgres

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, ta có thể đăng nhập vào account đó.

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

Bạn sẽ đăng nhập và có thể 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

Đến đây bạn sẽ quay 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ụ cuối cùng, ta chỉ muốn nhận được dấu nhắc của Postgres. Ta 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

Tạo một role mới

Hiện tại, ta chỉ có role postgres cấu hình trong database . Ta có thể tạo các role mới từ dòng lệnh bằng lệnh createrole . Các --interactive cờ sẽ nhắc bạn cho các giá trị cần thiết.

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 từng lệnh mà không cần chuyển từ account thông thường của bạn , có thể chạy lệnh:

  • 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.

Output
Enter 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

Tạo database mới

Theo mặc định, một giả định khác mà hệ thống xác thực Postgres đưa ra là sẽ có một database có cùng tên với role đang được sử dụng để đăng nhập, mà role có quyền truy cập.

Vì vậy, nếu trong phần trước, ta đã tạo một user có tên là sammy , 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

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 có quyền sudo (không phải đăng nhập với quyền user postgres ):

  • sudo adduser sammy

Khi bạn đã có sẵn account thích hợp, bạn có thể chuyển qua 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

Bạn sẽ tự động đăng nhập với giả định 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
Output
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

Điều này có thể 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.

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, ta có thể xem qua cách hoàn thành một số tác vụ cơ bản.

Đầu tiên, ta có thể tạo một bảng để lưu trữ một số dữ liệu. Hãy tạo một bảng mô tả 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 , ta đặt tên cho bảng, sau đó xác định các cột mà ta muốn, cũng như loại cột và độ dài tối đa của trường dữ liệu . Ta 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ì mục đích của ta , ta sẽ 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 ); 

Ta đã làm một bàn chơi để kiểm kê các thiết bị mà ta có. Đ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. Ta đã 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 của ta ( equip_idinstall_date ), ta chưa đưa ra độ 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 .

Sau đó, ta đưa ra các cột cho type thiết bị và color , mỗi cột không được để trống. Ta 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ể. Cột cuối cùng là cột ngày ghi ngày ta lắp đặt thiết bị.

Ta có thể thấy 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 ta ở đây, nhưng ta cũng có một cái gì đó được gọi là playground_equip_id_seq thuộc loại sequence . Đây là đại diện của loại serial mà ta đã cung cấp cho cột equip_id của ta . Đ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)

Thêm, truy vấn và xóa dữ liệu trong bảng

Bây giờ ta có một bảng, ta có thể chèn một số dữ liệu vào đó.

Hãy thêm một đường trượt và một chiếc xích đu. Ta thực hiện điều này bằng cách gọi bảng mà ta 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. Cầu trượt và xích đu của ta có thể được thêm vào như sau:

  • INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
  • INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-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. Trước tiên, hãy nhớ rằng tên cột không nên được trích dẫn, nhưng các giá trị cột bạn đang nhập cần được trích dẫn.

Một điều cần lưu ý nữa là ta 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.

Sau đó, ta có thể lấy lại thông tin ta đã thêm bằng lệnh :

  • SELECT * FROM playground;
Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 1 | slide | blue | south | 2014-04-28 2 | swing | yellow | northwest | 2010-08-16 (2 rows)

Ở đây, bạn có thể thấy rằng ta 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 ta đã được tổ chức một cách chính xác.

Nếu slide trên playground bị hỏng và ta phải xóa nó, ta 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';

Nếu ta truy vấn lại bảng của bạn , ta sẽ thấy trang trình bày của ta không còn là một phần của bảng:

  • SELECT * FROM playground;
Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2010-08-16 (1 row)

Cách thêm và xóa cột khỏi bảng

Nếu ta muốn sửa đổi một bảng sau khi nó đã được tạo để thêm một cột bổ sung, ta có thể làm điều đó một cách dễ dàng.

Ta có thể thêm một cột để hiển thị lần bảo trì mới nhất 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 | 2010-08-16 | (1 row)

Ta có thể xóa một cột dễ dàng như vậy. Nếu ta thấy rằng group làm việc của ta sử dụng một công cụ riêng biệt để theo dõi lịch sử bảo trì, ta có thể loại bỏ cột ở đây bằng lệnh :

  • ALTER TABLE playground DROP last_maint;

Cách cập nhật dữ liệu trong bảng

Ta biết cách thêm bản ghi vào bảng và cách xóa chúng, nhưng ta 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. Ta 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 ta ) và thay đổi màu của nó thành “đỏ”. Điều này có thể hữu ích nếu ta đã sơn cho xích đu một công việc:

  • UPDATE playground SET color = 'red' WHERE type = 'swing';

Ta có thể xác minh hoạt động đã thành công bằng cách truy vấn lại dữ liệu của ta :

  • 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 , trang trình bày của ta 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 16.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:


Tags:

Các tin liên quan

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
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên Ubuntu 14.04
2015-03-18
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên CentOS 7
2015-03-18
Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 14.04
2014-04-28
Cách cài đặt và sử dụng Zope 2 và PostgreSQL trên Ubuntu 13.10
2014-03-25
Cách mở rộng quy mô theo chiều ngang một ứng dụng Laravel 4 với database PostgreSQL
2014-02-27
Mở rộng quy mô Ruby on Rails: Thiết lập một server PostgreSQL chuyên dụng (Phần 3)
2014-02-27