Đây là giải pháp hoàn chỉnh cho PostgreSQL 9+, được cập nhật gần đây.
CREATE USER readonly WITH ENCRYPTED PASSWORD 'readonly';
GRANT USAGE ON SCHEMA public to readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
-- repeat code below for each database:
GRANT CONNECT ON DATABASE foo to readonly;
\c foo
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly; --- this grants privileges on new tables generated in new database "foo"
GRANT USAGE ON SCHEMA public to readonly;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
Cảm ơn https://jamie.curle.io/creating-a-read-only-user-in-postgres/ về một số khía cạnh quan trọng
Nếu bất kỳ ai tìm thấy mã ngắn hơn và tốt nhất là mã có thể thực hiện điều này cho tất cả các cơ sở dữ liệu hiện có, hãy bổ sung thêm kudo.