Quản trị Postgresql GRANT

Lệnh GRANT trong PostgreSQL được sử dụng để cấp quyền cho người dùng hoặc roles để thực hiện các hoạt động cụ thể trên các đối tượng cơ sở dữ liệu như bảng, cột, view, schema, và các đối tượng khác. Dưới đây là chi tiết về cách sử dụng lệnh GRANT.

Cú pháp cơ bản

GRANT privilege [, ...] ON object_type object_name [, ...] TO role_name [, ...];
  • privilege: Quyền mà bạn muốn cấp (VD: SELECT, INSERT, UPDATE, DELETE).
  • object_type: Loại đối tượng (VD: TABLE, DATABASE, SCHEMA).
  • object_name: Tên của đối tượng.
  • role_name: Tên của người dùng hoặc vai trò nhận quyền.

Các quyền phổ biến

  • TABLE: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER.
  • DATABASE: CREATE, CONNECT, TEMPORARY.
  • SCHEMA: CREATE, USAGE.
  • FUNCTION: EXECUTE.
  • SEQUENCE: SELECT, UPDATE, USAGE.

Cấp quyền SELECT trên một bảng cho một roles:

GRANT SELECT ON TABLE table_name TO role_name;

GRANT SELECT ON TABLE employees TO hr_user;

Cấp quyền INSERT, UPDATE trên một bảng cho một roles:

GRANT INSERT, UPDATE ON TABLE employees TO hr_user;

Cấp quyền CONNECT trên cơ sở dữ liệu cho một roles:

GRANT CONNECT ON DATABASE db_name TO role_name;

GRANT CONNECT ON DATABASE company_db TO guest_user;

Cấp quyền USAGE trên một schema cho một roles:

GRANT USAGE ON SCHEMA schema_name TO role_name;

GRANT USAGE ON SCHEMA sales TO sales_team;

Cấp quyền CREATE trên một schema cho một roles:

GRANT CREATE ON SCHEMA schema_name TO role_name;

GRANT CREATE ON SCHEMA sales TO sales_team;

Cấp quyền SELECT trên một cột cụ thể của bảng cho một roles:

GRANT SELECT (column_name) ON TABLE table_name TO role_name;

GRANT SELECT (employee_name) ON TABLE employees TO hr_user;

Cấp quyền USAGE trên một sequence cho một roles:

GRANT USAGE, SELECT ON SEQUENCE sequence_name TO role_name;

GRANT USAGE, SELECT ON SEQUENCE employee_id_seq TO hr_user;

Quản lý quyền với lệnh REVOKE

REVOKE privilege [, ...] ON object_type object_name [, ...] FROM role_name [, ...];

REVOKE SELECT ON TABLE employees FROM hr_user;

Cấp quyền với tùy chọn WITH GRANT OPTION

Khi cấp quyền với tùy chọn WITH GRANT OPTION, roles được cấp quyền có thể cấp lại quyền đó cho các roles khác.

GRANT SELECT ON TABLE table_name TO role_name WITH GRANT OPTION;

GRANT SELECT ON TABLE employees TO hr_manager WITH GRANT OPTION;

Xem quyền hiện có

Bạn có thể kiểm tra quyền hiện có của các roles bằng cách truy vấn các bảng hệ thống như pg_roles, pg_catalog.pg_tables, information_schema.table_privileges.

Kiểm tra quyền trên bảng:

SELECT grantee, privilege_type FROM information_schema.table_privileges WHERE table_name = 'table_name';

SELECT grantee, privilege_type FROM information_schema.table_privileges WHERE table_name = 'employees';
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận