将数据库中特定模式的所有内容授予 PostgreSQL 中的组角色

2023-12-15

使用 PostgreSQL 9.0,我有一个名为“staff”的组角色,并且希望向该角色授予特定模式中表的所有(或某些)权限。没有以下工作

GRANT ALL ON SCHEMA foo TO staff;
GRANT ALL ON DATABASE mydb TO staff;

“staff”的成员仍然无法对模式“foo”中的各个表或(在第二个命令的情况下)数据库中的任何表进行 SELECT 或 UPDATEunless我同意该特定表上的所有内容。

我可以做什么让我和我的用户的生活更轻松?

Update:在以下人员的帮助下解决了这个问题serverfault.com 上有类似的问题.

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo TO staff;

您找到了为所有人设置权限的简写existing给定模式中的表。手册明确了:

(但请注意ALL TABLES被认为包括views and 外国表).

大胆强调我的。serial列的实现是nextval()在作为列默认值的序列上,引用手册:

对于序列,此权限允许使用currval and nextval功能。

所以如果有serial列,您还需要授予USAGE (or ALL PRIVILEGES) on 序列

GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;

Note: IDENTITY columns在 Postgres 10 或更高版本中使用不需要额外权限的隐式序列。 (考虑升级serial列。)

关于什么new物体?

您也会感兴趣DEFAULT PRIVILEGES对于用户或模式:

ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE          ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;

这会自动为将来创建的对象设置权限,但不会为预先存在的对象设置权限。

默认权限是only应用于目标用户创建的对象(FOR ROLE my_creating_role)。如果省略该子句,则默认为当前用户执行ALTER DEFAULT PRIVILEGES。明确地说:

ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;

另请注意,pgAdmin III 的所有版本都有一个微妙的错误,并且displaySQL 窗格中的默认权限,即使它们不适用于当前角色。请务必调整FOR ROLE复制 SQL 脚本时手动添加子句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据库中特定模式的所有内容授予 PostgreSQL 中的组角色 的相关文章

  • 数据库设计 - 何时拆分表?

    有时创建一个单独的表会产生更多工作 我是否应该将其拆分 例如 在我的项目中 我有一张客户表 每个客户对每种产品都有自己的特殊价格 只有5种产品 未来不会计划更多产品 每个客户也有一周中公司向他交付产品的独特日子 当日期和产品价格是客户表中的
  • 将 PostgreSQL 扩展安装到所有模式

    我在 PostgresQL 9 1 1 上尝试扩展unaccent http www postgresql org docs 9 1 static unaccent html适用于所有模式 所以我运行了命令CREATE EXTENSION
  • Rails 5:迭代的数据库设计

    我目前有一个包含用户 餐食和订单表的网站 Users表保存用户信息 餐食表包含餐食名称 描述 img url 我目前正在使用迭代来显示餐食 span class mealname span p p p p div class qty INP
  • psql:致命:角色“vagrant”不存在[重复]

    这个问题在这里已经有答案了 我创建了一个流浪实例 每次尝试时都会收到此错误psql在终端如何修复它 错误如下 psql 致命 角色 vagrant 不存在 我以为流浪汉会照顾这个 这是我的流浪文件 Vagrant require plugi
  • 为什么我的 SQL 占位符没有被替换(使用 Go pq)?

    根据文档 我正在这样做 var thingname string asdf var id int err database QueryRow SELECT id from things where thing thingname Scan
  • PSQLException 没有被捕获

    我正在使用 Tomcat 6 和 Postgresql 8 4 我的代码如下所示 try Prepared statement inserting something catch final PSQLException e LOG log
  • -bash:pg_dump:找不到命令

    我正在尝试在本地为我的 Rails 应用程序提取一个生产数据库 我本地的 postgres 版本太低 所以我需要从 9 4 1 更新到 Postgresql 9 6 5 我通过 Homebrew 安装了 Postgres 9 6 6 如下所
  • Docker - 如何在 postgres 容器中运行 psql 命令?

    我想在 postgres 映像中使用 psql 以便对数据库运行一些查询 但不幸的是 当我附加到 postgres 容器时 我收到错误 psql 命令未找到 对我来说 如何在容器中运行 postgresql 查询或命令是一个谜 如何在pos
  • 执行 INSERT into 数据库后如何获取插入行的 id?

    我正在使用 c 11 和 pqxx 访问 postgresql 数据库 我需要插入行的 id 和标志 如果成功与否 执行 INSERT into 数据库后如何获取插入行的 id 我试图在网上找到例子但没有成功 work txn conn t
  • SQL:每天选择最接近特定时间的一条记录

    我有一张表存储某个时间点的值 CREATE TABLE values value DECIMAL datetime DATETIME 每一天可能有多个值 也可能某一天只有一个值 现在我想获取给定时间跨度 例如一个月 内最接近一天中给定时间的
  • 限制 sqlite 表的最大行数

    我希望实现一种 活动日志 表 其中用户执行的操作存储在 sqlite 表中 然后呈现给用户 以便他们可以看到他们所做的最新活动 然而 自然地 我觉得没有必要保留每一个历史记录 所以我想知道是否有一种方法可以配置表以在达到最大设置限制后开始修
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • Hibernate 每个子类一个表继承策略的效率

    我正在考虑 Hibernate 管理的类层次结构的表布局 当然 每个子类表技术在我看来是一般意义上最合适的 然而 通过逻辑思考 我对其性能有些担忧 尤其是随着子类数量的扩展 举一个非常简短 且经典 的示例 假设您有以下类 public ab
  • Postgres jsonb数组:查询非空交集

    假设我有一个名为的 JSONB 列value在表中t 这些 JSON 的内部是tags字段是字符串列表 我想对这些标记的 JSON blob 进行查询 foo or bar 所以假设表数据如下所示 value tags other tags
  • 是否有可能在 postgres 中捕获外键违规

    我正在尝试将数据插入具有外键约束的表中 如果我插入的行中存在约束违规 我想丢弃该数据 问题是每次我违反约束时 postgres 都会返回一个错误 我是否可以在插入语句中添加一些语句 例如 ON FOREIGN KEY CONSTRAINT
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • postgreSql 中特定时间后表更新

    我已经在 postgres 中创建了表 现在我想在特定时间 例如 1 小时 后更新一行 我看到很多问题 例如 https dba stackexchange com questions 56424 column auto updated a
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • 如何在列上创建外键,该列的每条记录都可能引用多个表之一中的列?

    我正在创建一个社交网络 它有新闻 照片等多个实体 可以有评论 由于所有评论都具有相同的列并且行为方式相同 唯一的区别是它们的类型 新闻 照片或将来添加的其他内容 我决定为所有评论创建一个表 其中的列名为type 它工作得很好 直到我决定将外
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐