Cấp quyền sử dụng / chọn vào một bảng duy nhất
Nếu bạn chỉ cấp CONNECT cho cơ sở dữ liệu, người dùng có thể kết nối nhưng không có đặc quyền nào khác. Bạn phải cấp USAGE trên các không gian tên (lược đồ) và CHỌN trên các bảng và các khung nhìn riêng lẻ như vậy:
GRANT CONNECT ON DATABASE mydb TO xxx;
-- This assumes you're actually connected to mydb..
GRANT USAGE ON SCHEMA public TO xxx;
GRANT SELECT ON mytable TO xxx;
Nhiều bảng / lượt xem (PostgreSQL 9.0+)
Trong các phiên bản mới nhất của PostgreSQL, bạn có thể cấp quyền trên tất cả các bảng / lượt xem / vv trong lược đồ bằng một lệnh duy nhất thay vì phải gõ từng cái một:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO xxx;
Điều này chỉ ảnh hưởng đến các bảng đã được tạo. Mạnh mẽ hơn, bạn có thể tự động có các vai trò mặc định được gán cho các đối tượng mới trong tương lai:
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO xxx;
Lưu ý rằng theo mặc định, điều này sẽ chỉ ảnh hưởng đến các đối tượng (bảng) được tạo bởi người dùng đã ban hành lệnh này: mặc dù nó cũng có thể được đặt trên bất kỳ vai trò nào mà người dùng phát hành là thành viên. Tuy nhiên, bạn không nhận các đặc quyền mặc định cho tất cả các vai trò mà bạn là thành viên khi tạo đối tượng mới ... vì vậy vẫn còn một số vấn đề xung quanh. Nếu bạn áp dụng cách tiếp cận mà cơ sở dữ liệu có vai trò sở hữu và các thay đổi lược đồ được thực hiện như vai trò sở hữu đó, thì bạn nên gán các đặc quyền mặc định cho vai trò sở hữu đó. IMHO điều này hơi khó hiểu và bạn có thể cần thử nghiệm để đưa ra quy trình làm việc chức năng.
Nhiều bảng / lượt xem (phiên bản PostgreSQL trước 9.0)
Để tránh các lỗi trong các thay đổi dài, nhiều bảng, nên sử dụng quy trình 'tự động' sau đây để tạo yêu cầu GRANT SELECT
cho mỗi bảng / chế độ xem:
SELECT 'GRANT SELECT ON ' || relname || ' TO xxx;'
FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
WHERE nspname = 'public' AND relkind IN ('r', 'v', 'S');
Điều này sẽ xuất các lệnh GRANT có liên quan thành GRANT CHỌN trên tất cả các bảng, dạng xem và trình tự ở chế độ công khai, cho tình yêu sao chép-dán. Đương nhiên, điều này sẽ chỉ được áp dụng cho các bảng đã được tạo.