这个问题在这里已经有了答案:
aws rds postgresql在所有上下文中都禁止访问pg\u catalog.pg\u authid(1个答案)
10个月前关门了。
有rds postgres示例,并按如下方式检查用户访问:
SELECT
r.rolname,
ARRAY(SELECT b.rolname
FROM pg_catalog.pg_auth_members m
JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
WHERE m.member = r.oid) as memberof
FROM pg_catalog.pg_roles r
WHERE r.rolname NOT IN ('pg_signal_backend','rds_iam',
'rds_replication','rds_superuser',
'rdsadmin','rdsrepladmin')
ORDER BY 1;
当我运行时,用户x还在{rds\u superuser}中
SELECT * FROM pg_authid;
得到
ERROR: permission denied for relation pg_authid
尝试 GRANT ALL PRIVILEGES ON TABLE pg_authid TO vanare;
你知道我错过了什么吗?谢谢您。
1条答案
按热度按时间arknldoa1#
pg_audit
包含数据库密码,因此具有限制性权限:因此只有超级用户才能访问该表。与直觉相反,
rds_superuser
不是超级用户-在托管数据库上,您将永远无法获得超级用户权限,因为这将允许您访问操作系统。但是如果你使用
pg_roles
取而代之的是视图,每个人都可以阅读。