postgresql只读admin用户



我们有一个postgres数据库,我们想要运行一些检查。这个工具的一部分涉及到在数据库中循环所有的数据库表和视图,检查授予和其他事情——所以如果我们必须授予这个用户对单个表的访问权,这将是完全没有意义的。

我们希望能够创建一个用户,它对任何都有完全的读权限,而不管数据库中设置了什么权限,就像数据库所有者一样,但根本没有写权限。

这有可能吗?

要做到这一点,唯一的方法是对需要检查的每个单独对象授予SELECT特权。您可以使用

使工作更容易
GRANT SELECT ON ALL TABLES/SEQUENCES/... IN SCHEMA ... TO ...;

您也可以使用ALTER DEFAULT PRIVILEGES来设置对未来对象的权限。

我建议您创建一个readonly角色并一次性完成所有操作。然后,您可以通过将用户设置为只读角色的成员来创建只读用户。

对于postgresql 14,您可以这样做:

GRANT pg_read_all_data TO my_role;

https://www.postgresql.org/docs/14/predefined-roles.html

最新更新