Cấp quyền cho người dùng trong PostgreSQL là một phần quan trọng trong quản lý cơ sở dữ liệu. Dưới đây là hướng dẫn chi tiết về cách thực hiện việc này.

1. Tạo người dùng mới

Trước khi cấp quyền, bạn cần tạo người dùng (role) mới. Sử dụng câu lệnh sau:

CREATE ROLE new_user WITH LOGIN PASSWORD 'your_password';

2. Cấp quyền truy cập cơ sở dữ liệu

Để cấp quyền cho người dùng mới truy cập vào một cơ sở dữ liệu cụ thể, bạn cần sử dụng câu lệnh GRANT. Giả sử bạn có một cơ sở dữ liệu tên là my_database, câu lệnh sẽ như sau:

GRANT CONNECT ON DATABASE my_database TO new_user;

3. Cấp quyền trên schema

Sau khi cấp quyền kết nối vào cơ sở dữ liệu, bạn có thể cấp quyền cho người dùng trên một schema (là tập hợp các bảng và đối tượng khác). Ví dụ, để cấp quyền truy cập vào schema public, bạn thực hiện:

GRANT USAGE ON SCHEMA public TO new_user;

4. Cấp quyền trên bảng

Bạn có thể cấp quyền truy cập cho người dùng trên các bảng cụ thể hoặc tất cả các bảng trong schema. Để cấp quyền SELECT trên một bảng cụ thể, bạn có thể sử dụng:

GRANT SELECT ON TABLE public.my_table TO new_user;

Để cấp quyền trên tất cả các bảng trong schema:

GRANT SELECT ON ALL TABLES IN SCHEMA public TO new_user;

5. Cấp quyền INSERT, UPDATE, DELETE

Ngoài quyền SELECT, bạn cũng có thể cấp quyền cho các thao tác khác như INSERT, UPDATE và DELETE. Dưới đây là các câu lệnh tương ứng:

GRANT INSERT ON TABLE public.my_table TO new_user;
GRANT UPDATE ON TABLE public.my_table TO new_user;
GRANT DELETE ON TABLE public.my_table TO new_user;

Để cấp tất cả quyền trên một bảng:

GRANT ALL PRIVILEGES ON TABLE public.my_table TO new_user;

6. Cấp quyền cho các đối tượng khác

Ngoài bảng, bạn cũng có thể cấp quyền cho các đối tượng khác như views hoặc sequences:

Cấp quyền trên View

GRANT SELECT ON VIEW public.my_view TO new_user;

Cấp quyền trên Sequence

GRANT USAGE, SELECT ON SEQUENCE public.my_sequence TO new_user;

7. Kiểm tra quyền của người dùng

Để kiểm tra quyền của một người dùng cụ thể, bạn có thể sử dụng câu lệnh sau:

\dp

Câu lệnh này sẽ hiển thị quyền truy cập của tất cả các bảng trong cơ sở dữ liệu.

8. Thu hồi quyền

Nếu bạn cần thu hồi quyền đã cấp, bạn có thể sử dụng câu lệnh REVOKE. Ví dụ:

REVOKE SELECT ON TABLE public.my_table FROM new_user;

9. Tóm tắt quyền trong PostgreSQL

  • CONNECT: Quyền kết nối vào cơ sở dữ liệu.
  • USAGE: Quyền sử dụng schema.
  • SELECT: Quyền truy cập dữ liệu từ bảng.
  • INSERT: Quyền chèn dữ liệu vào bảng.
  • UPDATE: Quyền cập nhật dữ liệu trong bảng.
  • DELETE: Quyền xóa dữ liệu từ bảng.
  • ALL PRIVILEGES: Tất cả các quyền.