我正在寻找一个如何创建postgres角色的解决方案,该角色可以连接到所有数据库(也就是在角色之后创建的数据库)。
这通常是超级用户可以做的事情,但在我的情况下,该用户应该只具有对特定表的只读权限。
这可能吗?
或者每次添加新数据库时是否必须更新角色?虽然表名总是一样的。
感谢
答案 0 :(得分:2)
默认情况下PUBLIC可以connect to PostgreSQL databases。
PostgreSQL为某些类型的对象授予默认权限 上市。默认情况下,表上没有为PUBLIC授予任何权限, 列,模式或表空间。对于其他类型,默认值 授予PUBLIC的权限如下:CONNECT和CREATE TEMP 数据库表;函数的EXECUTE特权;和用法 语言特权。
如果您正在使用pgAdminIII,并且在对象浏览器中选择了一个数据库,那么您将在SQL窗格中看到这一点。
GRANT CONNECT, TEMPORARY ON DATABASE sandbox TO public;
您可以alter default privileges
使用alter default privileges
对某些类型的数据库对象进行change default privileges。这不会影响现有的数据库对象。以通常的方式为现有对象授予权限。
{{1}}是"每个数据库"声明;您无法更改尚未创建的数据库的默认权限。
您可以为存在的表授予权限。您可以更改所有尚不存在的表的默认权限。但是无法更改具有特定名称但尚不存在的表的默认权限。
您可以在the template database中的对象上设置合适的权限和默认值。然后,您创建的每个数据库都将包含这些对象,权限和默认值。