Bạn đã tìm thấy cách viết tắt để đặt đặc quyền cho tất cả hiện có bảng trong lược đồ đã cho. Hướng dẫn làm rõ:
(nhưng lưu ý rằng
ALL TABLES
được coi là bao gồm lượt xem và bảng nước ngoài ).
Tôi nhấn mạnh đậm. serial
các cột được triển khai với nextval()
trên một trình tự làm cột mặc định và trích dẫn hướng dẫn sử dụng:
Đối với các chuỗi, đặc quyền này cho phép sử dụng
currval
vànextval
các chức năng.
Vì vậy, nếu có serial
, bạn cũng sẽ muốn cấp USAGE
(hoặc ALL PRIVILEGES
) trên chuỗi
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
Lưu ý:các cột nhận dạng trong Postgres 10 trở lên sử dụng chuỗi ngầm định không yêu cầu đặc quyền bổ sung. (Xem xét nâng cấp serial
cột.)
Còn về mới đối tượng?
Bạn cũng sẽ quan tâm đến DEFAULT PRIVILEGES
cho người dùng hoặc lược đồ:
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;
Điều này đặt đặc quyền cho các đối tượng được tạo trong tương lai một cách tự động - nhưng không đặt cho các đối tượng đã có từ trước.
Đặc quyền mặc định là chỉ áp dụng cho các đối tượng được tạo bởi người dùng được nhắm mục tiêu (FOR ROLE my_creating_role
). Nếu mệnh đề đó bị bỏ qua, mệnh đề đó được mặc định là người dùng hiện tại thực thi ALTER DEFAULT PRIVILEGES
. Nói rõ ràng:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
Cũng xin lưu ý rằng tất cả các phiên bản của pgAdmin III đều có một lỗi nhỏ và hiển thị các đặc quyền mặc định trong ngăn SQL, ngay cả khi chúng không áp dụng cho vai trò hiện tại. Đảm bảo điều chỉnh FOR ROLE
mệnh đề theo cách thủ công khi sao chép tập lệnh SQL.