我正在寻找如何创建postgres角色的解决方案,它可以连接到所有数据库(也是在角色之后创建的数据库)。
这通常是超级用户可以做的事情,但在我的例子中,这个用户应该只对特定的表进行只读访问。
这个是可能的吗?
还是每次添加新数据库时都必须更新该角色?尽管桌子的名字总是一样的。
谢谢
发布于 2016-01-03 15:26:32
默认情况下,PUBLIC可以连接到PostgreSQL数据库。
PostgreSQL将某些类型的对象的默认权限授予公共。默认情况下,不对表、列、架构或表空间授予公共特权。对于其他类型,授予公共的默认特权如下:为数据库连接和创建临时表;对函数执行特权;对语言使用特权。
如果您使用的是pgAdminIII,并且在对象浏览器中选择了一个数据库,您将在SQL窗格中看到这一点。
GRANT CONNECT, TEMPORARY ON DATABASE sandbox TO public;您可以使用更改默认权限对某些类型的数据库对象使用alter default privileges。这不影响现有的数据库对象。以通常的方式授予对现有对象的特权。
alter default privileges是“每个数据库”语句;对于尚未创建的数据库,您不能更改默认权限。
可以为存在的表授予特权。您可以更改尚未存在的所有表的默认权限。但是,对于具有特定名称但尚未存在的表,您不能更改默认权限。
您可以在模板数据库中对对象设置适当的特权和默认值。然后,您创建的每个数据库都将包括这些对象、特权和默认值。
https://stackoverflow.com/questions/34575829
复制相似问题