has_parameter_privilege()

报告用户对系统参数权限的函数

has_parameter_privilege() 是一个系统函数,用于报告用户是否对配置参数具有指定的权限。

has_parameter_privilege()PostgreSQL 15中添加。

用法

has_parameter_privilege ( [ user name or oid, ] parameter text, privilege text )
         → boolean

PostgreSQL 15开始,可以显式地将配置参数上的权限授予非超级用户。 has_parameter_privilege()

如果未指定用户,则报告当前用户的权限。

允许的权限类型为

  • SET [WITH GRANT OPTION]
  • ALTER SYSTEM [WITH GRANT OPTION]

权限类型不区分大小写。

截至PostgreSQL 15,任何用户都可以查询任何其他用户的参数权限。

更改历史

示例

has_parameter_privilege() 的基本用法示例

postgres=# \c - foo
You are now connected to database "postgres" as user "foo".

postgres=> ALTER SYSTEM SET work_mem TO '8MB';
ERROR:  permission denied to set parameter "work_mem"

postgres=> \c - postgres
You are now connected to database "postgres" as user "postgres".

postgres=# GRANT ALTER SYSTEM ON PARAMETER work_mem TO foo;
GRANT

postgres=# SELECT has_parameter_privilege('foo', 'work_mem', 'ALTER SYSTEM');
 has_parameter_privilege
-------------------------
 t
(1 row)
postgres=# \c - foo
You are now connected to database "postgres" as user "foo".

postgres=> ALTER SYSTEM SET work_mem TO '8MB';
ALTER SYSTEM

权限类型不区分大小写

postgres=# SELECT has_parameter_privilege('foo', 'work_mem', 'ALTER system');
 has_parameter_privilege
-------------------------
 t
(1 row)

尝试查询参数不支持的权限类型

postgres=# SELECT has_parameter_privilege('foo', 'work_mem', 'EXECUTE');
ERROR:  unrecognized privilege type: "EXECUTE"

分类

配置系统函数用户和角色

反馈

提交任何关于"has_parameter_privilege()" 的评论、建议或更正 在此