Lý do là bạn cần các đặc quyền bổ sung để truy cập một chế độ xem hoặc bảng. Các đặc quyền trên cơ sở dữ liệu không bao gồm quyền truy cập vào tất cả các đối tượng trong đó.
Nó khác với các chức năng:EXECUTE
đặc quyền được cấp cho public
theo mặc định. Nhưng chức năng được thực thi với các đặc quyền của người dùng hiện tại. Bạn có thể quan tâm đến SECURITY DEFINER
bổ trợ cho CREATE FUNCTION
. Nhưng thông thường, chỉ cần cấp SELECT
là đủ trên các bảng có liên quan.
Theo tài liệu về các đặc quyền mặc định:
Tùy thuộc vào loại đối tượng, các đặc quyền mặc định ban đầu không bao gồm việc cấp một số đặc quyền cho
PUBLIC
. Mặc định là không có truy cập công cộng cho bảng, cột, lược đồ và không gian bảng;CONNECT
đặc quyền vàTEMP
đặc quyền tạo bảng cho cơ sở dữ liệu;EXECUTE
đặc quyền cho các chức năng; vàUSAGE
đặc quyền cho các ngôn ngữ.
Bạn có thể quan tâm đến lệnh DDL này (yêu cầu Postgres 9.0 trở lên):
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
Tất nhiên, khi được kết nối với cơ sở dữ liệu được đề cập (xem nhận xét của @ marcel bên dưới) và với tư cách là người dùng có đủ đặc quyền. Bạn cũng có thể quan tâm đến cài đặt DEFAULT PRIVILEGES
:
- Cấp tất cả trên một lược đồ cụ thể trong db cho một vai trò nhóm trong PostgreSQL
Câu trả lời chi tiết hơn về cách quản lý đặc quyền:
- Cách quản lý QUYỀN RIÊNG TƯ CHO NGƯỜI DÙNG trên CƠ SỞ DỮ LIỆU so với SCHEMA?
pgAdmin có một tính năng dành cho các hoạt động hàng loạt phức tạp hơn:
Hoặc bạn có thể truy vấn danh mục hệ thống để tạo các câu lệnh DDL để cấp / thu hồi hàng loạt ...