Postgres:授予角色/用户对由不同角色/用户创建的未来表的访问权限

2024-02-18

我正在构建一个 Spring Boot 应用程序。 Flyway 数据库迁移在应用程序启动时执行。

我决定使用两个不同的角色:角色__app (读/写表的权限、序列的权限app模式)和角色__迁移 (advanced的权利app/移民模式)。

Flyway迁移是在下面执行的角色__迁移所以它成为所创建对象的所有者。我认为以下陈述会有所帮助:

ALTER DEFAULT PRIVILEGES IN SCHEMA app GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO role__app;
ALTER DEFAULT PRIVILEGES IN SCHEMA app GRANT USAGE ON SEQUENCES TO role__app;

但是当新表添加到app架构用户__app(属于角色__app) 无权访问表。

是否可以通过 Postgres 或任何其他方式维护这样的流程(使用应用程序、迁移用户/角色)?


作为旁注,我应该提到我在目标数据库上运行以下语句:

REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON DATABASE myDb FROM PUBLIC;

Update 1

我添加了FOR ROLE子句,但我仍然收到创建的表的权限被拒绝的消息(应用程序属性) 在用户的应用程序架构中用户__app。该表的所有者是用户__mig.

Update 2

在 dbeaver 中以 postgres 用户身份登录后我们可以看到用户__mig已勾选所有必要的权限,而用户__app没有权限应用程序属性表全部:


这是重现该问题的要点:https://gist.github.com/happygrizzly/849a6a791f028ba5b191f73180ae35d1 https://gist.github.com/happygrizzly/849a6a791f028ba5b191f73180ae35d1


你应该写

ALTER DEFAULT PRIVILEGES FOR USER role__migration ...

如果您省略FOR USER子句,权限仅授予由运行的用户创建的对象ALTER DEFAULT PRIVILEGES.

通过上述语句,当以下情况时授予权限:role__migration创建一个对象。确实如此not扩展到角色成员role__migration.

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

Postgres:授予角色/用户对由不同角色/用户创建的未来表的访问权限 的相关文章

随机推荐

  • 有条件导入

    我正在考虑在使用swing的java程序中添加dbus功能 这样脚本就可以用来执行一些功能 这个东西也必须在windows上运行 而dbus不可用 所以我正在考虑做以下事情 dbus java import dbus Whatever th
  • Java.exe 在 Android Studio 中以非零退出值 2 结束

    当我添加后出现此错误编译 org apache httpcomponents httpmime 4 2 3 找不到解决方案我还在默认配置部分尝试了多个 dex 文件 true 我还尝试创建另一个运行成功的应用程序进行测试 错误 任务 app
  • 在 App.cs (Xamarin) 中显示 DisplayAlert

    我目前正在尝试不断跟踪用户是否连接到互联网 我有用于检查连接的代码 并且我希望能够在用户使用该应用程序时未连接到互联网时显示弹出窗口 但是 我不能把DisplayAlert at App cs 错误 上下文中不存在 DisplayAlert
  • 我可以使用 ASP.NET 进行“WAR 文件”类型部署吗?

    有时精通 J2EE 的人看到 ASP NET 时会想 将应用程序部署为单个单元的支持在哪里 JSP Servlet 应用程序可以部署为 WAR 文件 所有页面 内容 元数据和代码都位于单个存档中 war 文件可以进行版本控制 可以轻松移动
  • 应用程序在 jdbcTemplate 中随机挂起进行更新

    我在用simpleJdbcTemplateSpring 使用如下所示的查询执行更新 update TABLE B JOIN select Column1 from TABLE A C ON B Column2 C Column3 set B
  • 创建跨域的cookie

    我正在研究饼干 我能够非常轻松地创建cookie 要创建 cookie 我使用以下代码 HttpCookie aCookie new HttpCookie Cookie name aCookie Value Value Response C
  • Dart 错误:Dart_LookupLibrary:未找到库“package:home_widget/home_widget_callback_dispatcher.dart”

    一个很奇怪的问题 我在用https pub dev packages home widget https pub dev packages home widget我正在尝试使用 backgroundCallback 通过按小部件上的图像来刷
  • RTMP中是如何包含flv格式的?

    我正在使用 Wireshark 来检查数据包 但我对 RTMP 流媒体中如何遵循 flv 格式感到困惑 FLV 文档指定标签为 标签类型 数据大小 时间戳 时间戳扩展 streamID VideoTagHeader 但我得到 fmt tim
  • 使用 wkhtmltopdf 设置横向方向

    我如何改变我的方向pdf生成的文件Wkhtmltopdf 我在 PHP 中调用它 如下所示 file fopen tmp html pdfTmp numRand html w or exit Unable to open file fwri
  • 如何从 File#path 获取 utf8 字符

    File path给我 Latin 1 字符 有没有办法让它给我 utf8 字符 或者我应该转换它返回的内容 如果是这样 最好 最简单的转换方法是什么 阐述 所以 我知道我可以这样做 Iconv new UTF 8 LATIN1 iconv
  • 如何将自定义验证器与 dropwizard 一起使用?

    我有一个由其他人编写的 REST api 其中处理对特定 url 的请求的方法接受一堆从路径参数填充的参数 POST Path classid studentid details Consumes MediaType MULTIPART F
  • 将 MySQL ANSI 输入转换为 UTF-8 [重复]

    这个问题在这里已经有答案了 我决定将我的网络应用程序从 ANSI 切换为 UTF 8 在 Notepad 中转换我的硬编码文件的编码后 这会执行转换 不仅仅是更改字符集 并为 UTF 8 设置新的元标记 我现在需要转换我的数据库数据 该数据
  • 从 Rails 控制器访问资产路径

    我正在共享一个配置 yml 文件客户端 我还需要在服务器端加载它 我已将其放置在 app assets javascripts configuration yml 中 我可以在视图内使用 asset path configuration y
  • 是否可以使用 JavaScript 触发键盘按钮?

    是否可以使用 JavaScript 触发键盘按钮 并根据 Caps Lock 按钮获取输入大小写 因此 如果我的大写锁定打开 它应该是大写的 或 如果它关闭了 它应该是小写的 触发关键事件 var ev jQuery Event keypr
  • 无法读取 C 中的某些注册表项

    我正在使用 RegOpenKeyEx 和 RegQueryValueEx 尝试获取 Windows 注册表中六个键的值 我能够完成六项中的四项 但在某些其他方面却失败了 wchar t getRegKeyValue HKEY rootKey
  • iOS7 中检测 MKOverlay 的触摸(MKOverlayRenderer)

    我有一个 MKMapView 可能绘制了数百个多边形 在 iOS7 上将 MKPolygon 和 MKPolygonRenderer 作为一个使用 我需要的是一种对用户触摸其中一个多边形进行操作的方法 例如 它们代表地图上具有一定人口密度的
  • 研究具有标准编码风格的优势

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 Stackoverflow 上有几个问题 关于是否有任何关于什么是最佳编码约定 风格的研究 这
  • 当闭源 CocoaPod 依赖于其他 pod 时,如何为它创建 XCFramework

    我正在寻找创建一个闭源 CocoaPod 根据我的研究 建议似乎是将其作为 XCFramework 分发 source https stackoverflow com a 66459296 1795356 似乎还可以通过在 Podspec
  • AngularJS - POST 后刷新

    在 Angular 中发出 http POST 请求后刷新内容的正确方法是什么 controller js var hudControllers angular module hudControllers hudControllers co
  • Postgres:授予角色/用户对由不同角色/用户创建的未来表的访问权限

    我正在构建一个 Spring Boot 应用程序 Flyway 数据库迁移在应用程序启动时执行 我决定使用两个不同的角色 角色 app 读 写表的权限 序列的权限app模式 和角色 迁移 advanced的权利app 移民模式 Flyway