Hubert 'depesz' Lubaczewski:系统角色——是什么,为什么,如何?

💡 原文英文,约1800词,阅读约需7分钟。
📝

内容提要

PostgreSQL 9.6开始,我们有一些以pg_开头的内置角色,它们是组,不能用于登录数据库,但可以授予用户更多的权限,包括CHECKPOINT命令,pg_database_owner角色,pg_execute_server_program,pg_read_all_settings,pg_read_all_stats,pg_stat_scan_tables,pg_signal_backend和pg_use_reserved_connections等。

🎯

关键要点

  • PostgreSQL 9.6引入了一些以pg_开头的内置角色,这些角色是组,不能直接登录数据库。
  • 这些角色可以授予用户更多权限,包括执行CHECKPOINT命令等。
  • 角色的权限是全局的,授予某个数据库的角色在其他数据库中也有效。
  • pg_database_owner角色允许用户读取特定表的数据,前提是表的拥有者授予了相应的权限。
  • pg_execute_server_program角色允许用户使用COPY命令从外部程序读取数据。
  • pg_read_all_data角色允许用户读取所有表的数据,包括系统表。
  • pg_read_all_settings角色允许用户查看服务器配置,包括通常仅限超级用户可见的设置。
  • pg_read_all_stats角色允许用户访问所有pg_stat_*视图,查看其他用户的查询信息。
  • pg_read_server_files角色允许用户读取服务器上的文件,但测试中发现权限问题。
  • pg_signal_backend角色允许用户取消或终止其他用户的后端进程,但不能取消超级用户的进程。
  • pg_use_reserved_connections角色为用户保留连接,但需要其他权限才能执行数据操作。
➡️

继续阅读