I have two users [UserA, UserB] -- UserA is an existing user. I just created UserB and gave it GRANT ALL PRIVILEGES.

But when I try to see privileges by doing

select * from information_schema.role_table_grants

UserA sees a lot more rows than UserB in the public schema.

For example

  1. UserA can see all the rows with grantee in "admin_group", but UserB can't.
  2. UserA and UserB can see all the rows with grantee in "user_group".

This is confusing because I did not do anything special to "user_group" (that I know of). What additional permission do I have to give to UserB so it can see all rows in information_schema.role_table_grants.

1 Answer 1


One possible cause is that UserA belongs to "admin_group" and that UserB does not belong to "admin_group". Please post output of following statements run by a superuser from psql CLI:

\du userA
\du userB
select * from information_schema.role_table_grants where grantee='user_group';
select * from information_schema.role_table_grants where grantee='admin_group';
  • You got it! Thanks. UserA was in a superuser group that had access to all other groups. UserB was not. But this answer confuses me even more. This role_table_grants table seems pointless to me. If UserB has access to GRANT privileges on a schema to any role, but can't actually see privileges already granted to all roles, then what's the point. This means there could potentially be a ton of duplicate grants because UserB doesn't know about UserA grants.
    – vinhboy
    Mar 6, 2020 at 18:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.