PostgreSQL - QUYỀN RIÊNG TƯ

Bất cứ khi nào một đối tượng được tạo trong cơ sở dữ liệu, chủ sở hữu sẽ được gán cho nó. Chủ sở hữu thường là người thực hiện câu lệnh tạo. Đối với hầu hết các loại đối tượng, trạng thái ban đầu là chỉ chủ sở hữu (hoặc người cấp quyền) mới có thể sửa đổi hoặc xóa đối tượng. Để cho phép các vai trò hoặc người dùng khác sử dụng nó, bạn phải cấp đặc quyền hoặc quyền.

Các loại đặc quyền khác nhau trong PostgreSQL là:

  • SELECT,
  • INSERT,
  • UPDATE,
  • DELETE,
  • TRUNCATE,
  • REFERENCES,
  • TRIGGER,
  • CREATE,
  • CONNECT,
  • TEMPORARY,
  • THỰC HIỆN và
  • USAGE

Tùy thuộc vào loại đối tượng (bảng, hàm, v.v.), các đặc quyền được áp dụng cho đối tượng. Để gán đặc quyền cho người dùng, lệnh GRANT được sử dụng.

Cú pháp cho GRANT

Cú pháp cơ bản cho lệnh GRANT như sau:

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • privilege - giá trị có thể là: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object- Tên của một đối tượng để cấp quyền truy cập. Các đối tượng có thể là: bảng, khung nhìn, chuỗi

  • PUBLIC - Một biểu mẫu ngắn đại diện cho tất cả người dùng.

  • NHÓM group - Một nhóm cấp đặc quyền cho ai.

  • username- Tên của người dùng được cấp đặc quyền. PUBLIC là một hình thức ngắn đại diện cho tất cả người dùng.

Có thể thu hồi các đặc quyền bằng lệnh REVOKE.

Cú pháp REVOKE

Cú pháp cơ bản cho lệnh REVOKE như sau:

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
  • privilege - giá trị có thể là: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object- Tên của một đối tượng để cấp quyền truy cập. Các đối tượng có thể là: bảng, khung nhìn, chuỗi

  • PUBLIC - Một biểu mẫu ngắn đại diện cho tất cả người dùng.

  • NHÓM group - Một nhóm cấp đặc quyền cho ai.

  • username- Tên của người dùng được cấp đặc quyền. PUBLIC là một hình thức ngắn đại diện cho tất cả người dùng.

Thí dụ

Để hiểu các đặc quyền, trước tiên chúng ta hãy tạo NGƯỜI DÙNG như sau:

testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE

Thông báo CREATE ROLE cho biết rằng USER "manisha" đã được tạo.

Xem xét bảng COMPANY có các bản ghi như sau:

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Tiếp theo, hãy để chúng tôi cấp tất cả các đặc quyền trên bảng COMPANY cho người dùng "manisha" như sau:

testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT

Thông báo GRANT cho biết rằng tất cả các đặc quyền được gán cho NGƯỜI DÙNG.

Tiếp theo, chúng ta hãy thu hồi các đặc quyền từ USER "manisha" như sau:

testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE

Thông báo REVOKE cho biết rằng tất cả các đặc quyền đã bị thu hồi từ NGƯỜI DÙNG.

Bạn thậm chí có thể xóa người dùng như sau:

testdb=# DROP USER manisha;
DROP ROLE

Thông báo DROP ROLE cho biết NGƯỜI DÙNG 'Manisha' đã bị xóa khỏi cơ sở dữ liệu.