postgresql 如何确定用户是否被授予pg_write_all_data权限?

w41d8nur  于 12个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(211)

从PostgreSQL 14开始,有一个新的预定义的pg_write_all_data

GRANT pg_write_all_data TO our_user;

字符串
但是,我们如何找出我们过去授予了哪个用户此角色?

vs91vp4v

vs91vp4v1#

PostgreSQL中,可以查询系统目录表以查找有关角色成员身份和权限的信息。具体而言,可以检查pg_rolespg_auth_members表以确定哪些角色已被授予pg_write_all_data角色。
下面是一个你可以用途:的查询

SELECT
  m.roleid AS member_role_id,
  r.rolname AS member_role_name,
  m.roleid AS granted_role_id,
  g.rolname AS granted_role_name
FROM
  pg_auth_members m
JOIN
  pg_roles r ON m.roleid = r.oid
JOIN
  pg_roles g ON m.member = g.oid
WHERE
  m.roleid = 'pg_write_all_data'::regrole; -- Replace 'pg_write_all_data' with the OID of the role if needed

字符串

相关问题