postgresql db。兩個模式1. base_layers 2. how
每個人都有自己獨特的登錄名(不是超級用戶)postgresql從另一個表中的另一個表創建表
我很簡單地試圖從表中從base_layers連接SQL窗口
我跑瞭如何架構建立在base_layers架構中的一個表這
GRANT ALL ON SCHEMA base_layers TO how;
create table base_layers.man as
select * from how.hl_boundary
,這讓我這個錯誤
ERROR: permission denied for relation hl_boundary
********** Error **********
ERROR: permission denied for relation hl_boundary
SQL state: 42501
但是當我通過Postgres的運行相同的查詢SQL連接窗口它正確地創建此表中base_layers模式...
什麼,我需要爲base_layers連接SQL窗口做的是能夠從另一個架構中創建一個表
如何架構
-- Schema: how
-- DROP SCHEMA how;
CREATE SCHEMA how
AUTHORIZATION how;
GRANT ALL ON SCHEMA how TO how;
GRANT USAGE ON SCHEMA how TO public;
GRANT ALL ON SCHEMA how TO base_layers;
ALTER DEFAULT PRIVILEGES IN SCHEMA how
GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES
TO base_layers;
base_layers模式
-- Schema: base_layers
-- DROP SCHEMA base_layers;
CREATE SCHEMA base_layers
AUTHORIZATION base_layers;
GRANT ALL ON SCHEMA base_layers TO base_layers;
GRANT USAGE ON SCHEMA base_layers TO public;
GRANT ALL ON SCHEMA base_layers TO how;
ALTER DEFAULT PRIVILEGES IN SCHEMA base_layers
GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES
TO public;
你在創建這些表之前還是之後運行了'ALTER DEFAULT'?該命令不會更改現有表的權限。此外,它只適用於由當前用戶創建的表(除非指定'FOR [role]') – Nicarus
@Nicarus在創建表之後,我運行了alter default – ziggy
然後,您需要運行單獨的'GRANT'命令現有表作爲「ALTER DEFAULT」不會影響現有表。 – Nicarus