【问题标题】:postgresql create table in schema from another table in a different schemapostgresql 从不同模式中的另一个表在模式中创建表
【发布时间】:2017-07-25 00:23:52
【问题描述】:

postgresql 数据库。两个架构1. base_layers 2. how 每个都有自己唯一的登录名(不是超级用户)

我非常简单地尝试从 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 我在创建表后运行了 alter default
  • 那么您需要对现有表运行单独的GRANT 命令,因为ALTER DEFAULT 不会影响现有表。
  • 这对我有用,在架构中的所有表上授予选择如何 base_layers;

标签: postgresql


【解决方案1】:

您需要将该表的选择权限授予用户,如下所示:

GRANT SELECT ON TABLE hl_boundary TO [user];

[user] 替换为您正在运行此命令的用户。

【讨论】:

  • 不,还是同样的错误。我希望这两个模式之间的完全访问权限
  • 您在哪个 userschema 下运行它?
  • 用户:base_layers 架构:base_layers
  • 那么GRANT ALL ON SCHEMA base_layers TO how; 对你一点帮助都没有。您需要 base_layers 才能访问您的 how 架构。你GRANT ALL ON SCHEMA how TO base_layers;了吗?
  • 是的,它给了我警告:没有为“如何”授予特权.....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多