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.
Yêu cầu:
Trước tiên ta cần một server ubuntu 16.04 đã cấu hình cơ bản
Bước 1: Cài đặt PostgreSQL
- Để cài đặt chúng ta làm theo các lệnh sau:
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
Bước 2: Xác minh cài đặt PostgreSQL
- Sau khi quá trình cài đặt hoàn tất, dịch vụ PostgreSQL sẽ tự động khởi động. Để xác minh cài đặt và kiểm tra phiên bản PostgreSQL các bạn sử dụng lệnh sau:
sudo -u postgres psql -c "SELECT version();"
Bước 3: 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
- Thoát khỏi dấu nhắc PostgreSQL bằng lệnh :
\q
Bước 4: 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
sudo -u postgres psql
Bước 5: Roles và phương thức xác thực của PostgreSQL
- Quyền truy cập cơ sở dữ liệu trong PostgreSQL được xử lý với khái niệm Roles. Một Roles có thể đại diện cho người dùng hoặc một nhóm người dùng.
- PostgreSQL hỗ trợ nhiều phương thức xác thực. Các phương pháp được sử dụng phổ biến nhất là:
- Trust – Với phương thức này, Role có thể kết nối mà không cần mật khẩu, miễn là các tiêu chí được xác định trong pg_hba.conf được đáp ứng.
- Password – Một Role có thể kết nối bằng cách cung cấp mật khẩu. Mật khẩu có thể được lưu trữ dưới dạng scram-sha-256, md5 hoặc dạng text không mã hoá.
- Ident – Phương pháp này chỉ được hỗ trợ trên các kết nối TCP/IP. Nó hoạt động bằng cách lấy tên người dùng hệ điều hành khách hàng, với ánh xạ tên người dùng tùy chọn.
- Peer – Tương tự như Ident nhưng nó chỉ hỗ trợ trên các kết nối nội bộ (Local).
Xác thực ứng dụng khách PostgreSQL được xác định trong tệp cấu hình có tên pg_hba.conf. Theo mặc định, đối với các kết nối nội bộ (Local), PostgreSQL sẽ sử dụng phương thức xác thực Peer.
User postgres được tạo tự động khi bạn cài đặt PostgreSQL. Người dùng này là superuser của PostgreSQL và nó tương đương với người dùng root trong MySQL.
- Role khác với quyền kiểu Unix truyền thống ở chỗ không có sự phân biệt giữa user và group . Các role có thể được điều chỉnh để giống với cả hai quy ước này, nhưng chúng cũng linh hoạt hơn.
Ví dụ: các role có thể là thành viên của các role khác, cho phép chúng đảm nhận các đặc điểm cho phép của các role đã xác định trước đó. Role cũng có thể sở hữu các đối tượng và kiểm soát quyền truy cập vào đối tượng đó cho các role khác.
Bước 6: Liệt kê user và role của user
- Để liệt kê tất cả user và role được chỉ định của họ, bạn sử dụng lệnh \du
postgres=# \du
- Cách tạo role từ bên trong PostgreSQL
CREATE ROLE new_role_name;
- Cách xóa role trong PostgreSQL
DROP ROLE role_name;
- Nếu ta chạy lệnh trên một user không tồn tại, ta sẽ nhận được lỗi sau:
DROP ROLE demo_role;
ERROR: role "demo_role" does not exist
- Để tránh trường hợp này và thực hiện lệnh drop xóa user nếu có mặt và không làm gì nếu user không tồn tại, hãy sử dụng cú pháp sau:
DROP ROLE IF EXISTS role_name;
- Cách xác định quyền khi tạo role
CREATE ROLE role_name WITH optional_permissions;
Bạn có thể xem danh sách đầy đủ các tùy chọn bằng lệnh :
\h CREATE ROLE
- Cách thay đổi quyền của role trong PostgreSQL
- Để thay đổi các thuộc tính của một role đã được tạo, ta sử dụng lệnh "ALTER ROLE".
- Lệnh này cho phép ta xác định các thay đổi quyền mà không cần phải xóa và tạo lại user như ta đã trình bày trước đó.
ALTER ROLE role_name WITH attribute_options;
- Cách cấp quyền trong PostgreSQL
- Khi một database hoặc bảng được tạo, thường chỉ role đã tạo ra nó (không bao gồm các role có trạng thái siêu user ) mới có quyền sửa đổi nó. Ta có thể thay đổi hành vi này bằng cách cấp quyền cho các role khác.
إرسال تعليق