Để xem quyền (privileges) của người dùng trong PostgreSQL, bạn có thể sử dụng một số lệnh và truy vấn khác nhau. Dưới đây là một số cách phổ biến để kiểm tra quyền của người dùng:

1. Sử dụng câu lệnh dp trong psql

Nếu bạn đang sử dụng giao diện dòng lệnh psql, bạn có thể sử dụng lệnh dp để xem quyền trên các bảng trong cơ sở dữ liệu hiện tại.

\dp

Lệnh này sẽ hiển thị danh sách tất cả các bảng, cùng với quyền truy cập của các người dùng và nhóm.

2. Sử dụng câu lệnh du trong psql

Lệnh du cho phép bạn xem danh sách người dùng và vai trò (roles) trong PostgreSQL, cùng với thông tin về các quyền.

\du

3. Truy vấn các quyền từ hệ thống catalog

Bạn có thể sử dụng các truy vấn SQL để kiểm tra quyền của người dùng cụ thể trong các bảng hoặc đối tượng khác. Dưới đây là một số truy vấn hữu ích:

a. Kiểm tra quyền trên một bảng cụ thể

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

Thay thế your_table_name bằng tên bảng mà bạn muốn kiểm tra quyền.

b. Kiểm tra quyền trên tất cả các bảng trong cơ sở dữ liệu

SELECT grantee, table_name, privilege_type 
FROM information_schema.role_table_grants 
WHERE table_catalog = 'your_database_name';

Thay thế your_database_name bằng tên cơ sở dữ liệu mà bạn muốn kiểm tra.

c. Kiểm tra quyền của người dùng trong cơ sở dữ liệu

SELECT grantee, privilege_type 
FROM information_schema.role_usage_grants 
WHERE grantee = 'your_user_name';

Thay thế your_user_name bằng tên người dùng mà bạn muốn kiểm tra.

4. Kiểm tra quyền trên các đối tượng khác

Bạn có thể kiểm tra quyền trên các đối tượng khác như chức năng (functions), sequences, và schemas bằng cách sử dụng các bảng trong information_schema, như role_routine_grantsrole_schema_grants.

Ví dụ: Kiểm tra quyền trên các chức năng:

SELECT grantee, routine_name, privilege_type 
FROM information_schema.role_routine_grants 
WHERE grantee = 'your_user_name';

Kết luận

Bằng cách sử dụng các lệnh và truy vấn trên, bạn có thể dễ dàng kiểm tra và quản lý quyền của người dùng trong PostgreSQL, từ quyền truy cập bảng cho đến quyền trên các đối tượng khác trong cơ sở dữ liệu.