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