Cách Cài đặt PostgreSQL trên Ubuntu, WSL2

Chạy các bản cập nhật Ubuntu

sudo apt update
sudo apt upgrade -y

Để cài đặt Postgres trên WSL2, xem chi tiết trong Cách Cài đặt PostgreSQL trên Ubuntu, WSL2 - #2 bởi datvnn

1. Cài đặt máy chủ PostgreSQL 14

Để cài đặt máy chủ PostgreSQL 14, hãy làm theo các bước sau;

tạo một kho lưu trữ tệp

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Sau khi bạn đã thêm tập lệnh sau, bây giờ bạn có thể thêm khóa GPG.

Nhập khóa GPG

Nhập cặp khóa GPG để nó được ký chính xác. Sử dụng lệnh sau để nhập khóa.

sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Bạn sẽ nhận được đầu ra ok nghĩa là bạn đã thêm khóa GPG thành công.

Tiếp theo, chúng tôi sẽ chạy các bản cập nhật

sudo apt update

Bây giờ chúng ta có thể cài đặt phiên bản PostgreSQL mới nhất

Cài đặt PostgrSQL 14 trên Ubuntu 21.10

Sử dụng lệnh sau để cài đặt phiên bản cụ thể của PostgreSQL

$ sudo apt install postgresql-14 -y

Theo mặc định, phần mềm tạo một người dùng postgres , sau khi bạn cài đặt thành công hệ thống cơ sở dữ liệu. Tài khoản người dùng này có vai trò ‘postgres’ mặc định.

Để chuyển sang tài khoản Postgres, hãy sử dụng lệnh sau.

sudo -i -u postgres

Bạn có thể truy cập tài khoản Postgres bằng cách sử dụng lệnh sau.

$ psql
psql (14.1 (Ubuntu 14.1-2.pgdg20.04+1))
Type "help" for help.

postgres=# 

Kiểm tra thông tin với \conninfo

postgres=# \conninfo
You are connected to database "postgres" as user "postgres" on host "localhost" (address "127.0.0.1") at port "5432".
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
postgres=# 

2. Tạo một vai trò mới

Đăng nhập vào tài khoản postgres để tạo một vai trò mới

$ createuser --interactive
Enter name of role to add: aznet
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y

3. Tạo cơ sở dữ liệu mới

Hệ thống xác thực Postgres giả định rằng đối với bất kỳ vai trò nào được sử dụng để đăng nhập, vai trò đó sẽ có một cơ sở dữ liệu có cùng tên.

Ví dụ: chúng tôi đã tạo một người dùng với tên người dùng, vai trò này sẽ cố gắng kết nối với cơ sở dữ liệu được gọi là người dùng theo mặc định. Sử dụng createdb để tạo cơ sở dữ liệu thích hợp.

createdb aznet

Để truy cập dòng lệnh PostgreSQL, bạn cần có tài khoản Linux có cùng tên với vai trò và tên cơ sở dữ liệu. Nếu không có người dùng như vậy, bạn có thể tạo một người dùng bằng lệnh:

sudo adduser aznet

Khi tài khoản mới này khả dụng, bạn có thể chuyển đổi và kết nối với cơ sở dữ liệu bằng cách nhập:

sudo -i -u aznet

psql

Để kết nối với một cơ sở dữ liệu khác, hãy sử dụng lệnh sau.

psql -d postgres

Để cài đặt PostgreSQL trên WSL (tức là Ubuntu):

Mở thiết bị đầu cuối WSL của bạn (tức là Ubuntu).

  • Cập nhật các gói Ubuntu của bạn: sudo apt update
  • Khi các gói đã cập nhật, hãy cài đặt PostgreSQL (và gói -contrib vì nó có một số tiện ích hữu ích):
    sudo apt install postgresql postgresql-contrib
    
  • Xác nhận cài đặt và lấy số phiên bản: psql --version

Có 3 lệnh bạn cần biết sau khi cài đặt xong PostgreSQL:

  • sudo service postgresql status để kiểm tra trạng thái cơ sở dữ liệu của bạn.
  • sudo service postgresql start để bắt đầu chạy cơ sở dữ liệu của bạn.
  • sudo service postgresql stop để ngừng chạy cơ sở dữ liệu của bạn.

Người dùng quản trị mặc định postgres , cần có mật khẩu được chỉ định để kết nối với cơ sở dữ liệu. Để đặt mật khẩu:

  • Nhập lệnh: sudo passwd postgres
  • Bạn sẽ nhận được lời nhắc nhập mật khẩu mới của mình.
  • Đóng và mở lại thiết bị đầu cuối của bạn.

Để chạy PostgreSQL với psql shell:

  1. Bắt đầu dịch vụ postgres của bạn: sudo service postgresql start
  2. Kết nối với dịch vụ postgres và mở psql shell: sudo -u postgres psql
    Khi bạn đã nhập thành công psql shell, bạn sẽ thấy dòng lệnh của mình thay đổi thành như sau: postgres=#

Ngoài ra, bạn có thể mở psql shell bằng cách chuyển sang người dùng postgres bằng: su - postgres rồi nhập lệnh: psql.

Để thoát postgres=# nhập: \q hoặc sử dụng phím tắt: Ctrl + D

Để xem những tài khoản người dùng nào đã được tạo trên cài đặt PostgreSQL của bạn, hãy sử dụng từ thiết bị đầu cuối WSL của bạn: psql -c "\du" hoặc sudo -u postgres psql -c "\du" … hoặc chỉ \du khi bạn mở trình bao psql.

Lệnh này sẽ hiển thị các cột: Tên Người dùng Tài khoản, Danh sách Thuộc tính Vai trò và Thành viên của (các) nhóm vai trò. Để quay lại dòng lệnh, hãy nhập: q.

Tổng hợp một số lệnh cơ bản với Postgresql

1. Thông tin và trạng thái Postgres

psql --version # kiểm tra phiên bản
sudo service postgresql status # để kiểm tra trạng thái cơ sở dữ liệu của bạn.
sudo service postgresql start # để bắt đầu chạy cơ sở dữ liệu của bạn.
sudo service postgresql stop # để ngừng chạy cơ sở dữ liệu của bạn.

2. Thông tin Database và user

Người dùng quản trị mặc định postgres , cần có mật khẩu được chỉ định để kết nối với cơ sở dữ liệu.
Để đặt mật khẩu:
* Nhập lệnh: sudo passwd postgres

  • Bạn sẽ nhận được lời nhắc nhập mật khẩu mới của mình.
  • Đóng và mở lại thiết bị đầu cuối của bạn.

2.1 Đăng nhập Postgres với user mặc định postgres

sudo -u postgres psql;
# hoặc
psql -U shopaff -h localhost;

2.2 Xem thông tin user, data

Với trình bao psql

\du # danh sách user
\l # xem danh sách database và quyền sở hữu
\q : thoát khởi trình bao psql

Từ dòng lệnh

psql -U postgres -h localhost -c "\du";
psql -U postgres -h localhost -c "\l";
# hoặc
sudo -u postgres psql -c "\du";
sudo -u postgres psql -c "\l";

3. Tạo Database, User

Với trình bao psql

postgres=# CREATE DATABASE aznet_db;
postgres=# CREATE USER aznet_user WITH CREATEDB LOGIN ENCRYPTED PASSWORD '123456';
postgres=# GRANT ALL PRIVILEGES ON DATABASE aznet_db TO aznet_user;

Xóa data

postgres=# DROP DATABASE aznet_db;

Đổi mật khẩu user

postgres=# ALTER USER aznet_user PASSWORD 'newpass';

4. Export/Import

Xuất dữ liệu

sudo -u postgres pg_dump aznet_db > aznet_db_output.sql

Nhập dữ liệu

sudo -u postgres psql aznet_db < aznet_db_output.sql