PostgreSQL访问权限查询函数汇总和使用举例

来源:这里教程网 时间:2026-03-14 20:16:56 作者:

访问权限查询函数汇总:

名称 返回类型 描述
has_any_column_privilege(
user
,
table
,
privilege
)
boolean 用户有没有表中任意列上的权限
has_any_column_privilege(
table
,
privilege
)
boolean 当前用户有没有表中任意列上的权限
has_column_privilege(
user
,
table
,
column
,
privilege
)
boolean 用户有没有列的权限
has_column_privilege(
table
,
column
,
privilege
)
boolean 当前用户有没有列的权限
has_database_privilege(
user
,
database
,
privilege
)
boolean 用户有没有数据库的权限
has_database_privilege(
database
,
privilege
)
boolean 当前用户有没有数据库的权限
has_foreign_data_wrapper_privilege(
user
,
fdw
,
privilege
)
boolean 用户有没有外部数据包装器上的权限
has_foreign_data_wrapper_privilege(
fdw
,
privilege
)
boolean 当前用户有没有外部数据包装器上的权限
has_function_privilege(
user
,
function
,
privilege
)
boolean 用户有没有函数上的权限
has_function_privilege(
function
,
privilege
)
boolean 当前用户有没有函数上的权限
has_language_privilege(
user
,
language
,
privilege
)
boolean 用户有没有语言上的权限
has_language_privilege(
language
,
privilege
)
boolean 当前用户有没有语言上的权限
has_schema_privilege(
user
,
schema
,
privilege
)
boolean 用户有没有模式上的权限
has_schema_privilege(
schema
,
privilege
)
boolean 当前用户有没有模式上的权限
has_sequence_privilege(
user
,
sequence
,
privilege
)
boolean 用户有没有序列上的权限
has_sequence_privilege(
sequence
,
privilege
)
boolean 当前用户有没有序列上的权限
has_server_privilege(
user
,
server
,
privilege
)
boolean 用户有没有外部服务器上的权限
has_server_privilege(
server
,
privilege
)
boolean 当前用户有没有外部服务器上的权限
has_table_privilege(
user
,
table
,
privilege
)
boolean 用户有没有表上的权限
has_table_privilege(
table
,
privilege
)
boolean 当前用户有没有表上的权限
has_tablespace_privilege(
user
,
tablespace
,
privilege
)
boolean 用户有没有表空间上的权限
has_tablespace_privilege(
tablespace
,
privilege
)
boolean 当前用户有没有表空间上的权限
has_type_privilege(
user
,
type
,
privilege
)
boolean 用户有没有类型的特权
has_type_privilege(
type
,
privilege
)
boolean 当前用户有没有类型的特权
pg_has_role(
user
,
role
,
privilege
)
boolean 用户有没有角色上的权限
pg_has_role(
role
,
privilege
)
boolean 当前用户有没有角色上的权限
row_security_active(
table
)
boolean 当前用户是否在表上开启了行级安全性

使用举例:查看t1表是否有select权限: 11:21:15 (test@127.0.0.1:5432)test=# \c test test 您现在已经连接到数据库 "test",用户 "test". 11:21:18 (test@127.0.0.1:5432)test=# SELECT has_table_privilege('t1', 'select');  has_table_privilege  ---------------------  t (1 行记录) 时间:1.565 ms 查看test用户是否有usage权限: 11:22:23 (test@127.0.0.1:5432)test=# select pg_has_role('test','usage');  pg_has_role  -------------  t (1 行记录) 时间:0.752 ms

相关推荐