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.
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';
Để 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;
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;
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;
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;
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:
GRANT SELECT ON VIEW public.my_view TO new_user;
GRANT USAGE, SELECT ON SEQUENCE public.my_sequence TO new_user;
Để 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.
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;