如何授予對 PostgreSQL 模式中的所有專案的選擇權限?
我正在嘗試read-only在我的 PostgreSQL 資料庫中創建一個用戶。我所有的表格和視圖都位于schema1. 有時,會在 中添加新視圖schema1,但只讀用戶對新創建的視圖沒有讀取權限。
有沒有辦法對模式中的所有專案授予選擇權限,以便用戶也可以讀取任何新創建的模式?
我目前的代碼是:
CREATE ROLE readonly;
GRANT CONNECT ON DATABASE postgres TO readonly;
GRANT USAGE ON SCHEMA schema1 TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA schema1 TO readonly;
我知道我也可以添加一行來授予對模式中的視圖的選擇,但我正在尋找一種在添加新視圖時也能作業的解決方案。
uj5u.com熱心網友回復:
使用事件觸發器,您可以處理:
CREATE OR REPLACE FUNCTION auto_grant_func()
RETURNS event_trigger AS $$
BEGIN
GRANT CONNECT ON DATABASE postgres TO readonly;
GRANT USAGE ON SCHEMA schema1 TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA schema1 TO readonly;
END;
$$ LANGUAGE plpgsql;
CREATE EVENT TRIGGER auto_grant_trigger
ON ddl_command_end
WHEN TAG IN ('CREATE TABLE', 'CREATE TABLE AS')
EXECUTE PROCEDURE auto_grant_func();
uj5u.com熱心網友回復:
ALTER DEFAULT PRIVILEGES IN SCHEMA schema1 GRANT SELECT ON TABLES TO readonly;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/480576.html
標籤:PostgreSQL 权限
