PostgreSQL数据库具有Superuser属性的用户具有最高权限,高权限易出现一些误操作,各版本一直在降低对超级用户权限的依赖,本文介绍各版本对超级用户权限下放的细节。
9.6版本下放对后端进程取消或中止的操作
PostgreSQL 9.6开始提供预置角色对需要经常使用的功能进行权限访问,第一个预置角色是pg_signal_backend。它可以使用pg_cancel_backend或者pg_terminate_backend函数对后端进程发送信号,取消后端进程查询或者中止后端进程。
10版本下放监控相关的操作
PostgreSQL 10支持预置角色pg_monitor,它包含如下三个监控相关的权限。
- pg_read_all_settings:可以读取所有的配置变量。
- pg_read_all_stats:可以读取pg_stat_*视图信息,以及相关的扩展统计信息。
- pg_stat_scan_tables:可以执行一些监控函数。
11版本下放COPY相关的操作
PostgreSQL 11对COPY操作的如下三个预置角色。
- pg_read_server_files:控制COPY以及文件访问函数读文件的权限。
- pg_write_server_files:控制COPY以及文件访问函数写文件的权限。
- pg_execute_server_program:控制COPY执行程序的权限。
另外版本11支持pg_rewind工具依赖的文件读取函数下放,可通过grant将权限赋给普通用户。
14版本下放全局读写的操作
PostgreSQL 14支持数据库通用宿主及全局读写的权限。
- pg_database_owner:提供数据库宿主的通用权限,常见于模板库的定制化工作。
- pg_read_all_data:提供全局读取的访问权限,实例级全局只读用户。
- pg_write_all_data:提供全局写入的访问权限,实例级全局insert、update及delete。
15版本下放checkpoint操作
PostgreSQL 15支持预置角色pg_checkpoint执行checkpoint操作。
16dev版本下放maintain操作
正在开发中的PostgreSQL 16支持预置角色pg_maintain执行一些维护操作。
- vacuum:回收并重用存储空间,更新可见性映射以助于查询规划器快速识别实时行。
- analyze:收集表相关的统计数据,以便确定最有效的执行计划。
- reindex:重建数据库中的索引。
- refresh materialized view:刷新物化视图。
- cluster:对存量数据的一次性数据编排来提升查询效率。
- lock table:对表执行显式锁定的操作。
保持联系
本人组建了一个粉丝群:PG乐知乐享交流群。欢迎关注文章的小伙伴随缘加入,进群请加微信并备注PG乐知乐享。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。