Is it possible to set permission to other user for the table created by current user with PostgreSQL?

All we need is an easy explanation of the problem, so here it is.

In PostgreSQL, created these 2 roles and grant different permissions to them.

create user user1 with login;
create role operator;
grant operator to user1;

create user user2 with login;
create role readwrite;
grant readwrite to user2;

When created a table by user1, such as table1, user2 can’t use this table. It got permission denied.

Is it the right feature for PostgreSQL? If it is, how to make the table also can be used for user2?

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

user1 has to grant user2 permissions (via the role):

GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON newtable TO readwrite;

You can also define default privileges to have that happen automatically:

ALTER DEFAULT PRIVILEGES FOR ROLE user1
   GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO readwrite;

Now all tables created by user1 will automatically have the right permissions.

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply