Thực thi điều này được kết nối với cơ sở dữ liệu bạn muốn định cấu hình.
-- Create the user.
CREATE ROLE somebody WITH LOGIN PASSWORD '...';
-- Prevent all authenticated users from being able to use the database,
-- unless they have been explicitly granted permission.
REVOKE ALL PRIVILEGES ON DATABASE foo FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM PUBLIC;
-- Allow the user to only use the specified functions.
GRANT CONNECT ON DATABASE foo TO somebody;
GRANT EXECUTE ON FUNCTION return_customers(), return_time() TO somebody;
Nếu bạn có nhiều lược đồ hơn "công khai" thì bạn sẽ cần thêm các lược đồ đó vào hai REVOKE ALL PRIVILEGES ON ALL ...
tuyên bố.
Đừng quên rằng các chức năng phải được tạo bằng SECURITY DEFINER
hoặc người dùng này sẽ vẫn không thể thực thi chúng, vì nội dung của hàm sẽ được thực thi với quyền của người dùng này, thay vì người dùng đã tạo ra hàm.
Xem:
-
CREATE FUNCTION
đặc biệt làSECURITY DEFINER
-
GRANT
cả để thêm người dùng vào vai trò và chỉ định quyền truy cập vào bảng, chuỗi, v.v. -
REVOKE
-
CREATE ROLE