【问题标题】:allow create table for some users, not all允许为某些用户创建表,而不是全部
【发布时间】:2021-09-21 17:31:02
【问题描述】:

我需要在 postgres 中创建 2 个角色,一个只有权运行 SELECT 查询的只读角色,以及一个拥有完全超级用户权限的管理员角色。

如何从 1 个角色中删除“CREATE TABLE”,同时允许另一个角色“CREATE TABLE”?

我正在使用“REVOKE CREATE ON SCHEMA public FROM PUBLIC”来撤销创建权限,但这适用于所有角色,并且我希望允许管理员角色仍然创建表。

【问题讨论】:

  • 如果你真的只想要一个角色的 SELECT 权限,我想你可以先REVOKE ALL ON SCHEMA public FROM myrole 然后GRANT SELECT ON SCHEMA public TO myrole。文档中有 GRANT 和 REVOKE 的示例

标签: postgresql


【解决方案1】:

PostgreSQL 没有特殊的CREATE TABLE 权限,总是允许每个人创建表。创建表受架构权限的限制:如果您授予角色 CREATE 架构上的权限,则该角色可以在该架构中创建表(和其他对象)。

因此,将架构上的CREATE 授予一个角色,而不要将任何架构上的CREATE 授予另一个角色。

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 2013-04-06
    • 2018-05-31
    • 2016-02-26
    • 2023-04-11
    • 2016-06-09
    • 1970-01-01
    • 2015-11-02
    • 2018-05-21
    相关资源
    最近更新 更多