A user needs to have access to a table in order to perform any action on it. Although the default behavior of PostgreSQL database is to give full access to all users through role
PUBLIC, a security-conscious database setup revokes rights from
PUBLIC after table creation.
Make sure that you have appropriate "roles" defined, and that privileges are "revoked" from role
Grant access to schema containing the table to:
GRANT ALL ON someschema TO somerole; GRANT SELECT, INSERT, UPDATE, DELETE ON someschema.sometable TO somegroup; GRANT somerole TO someuser, otheruser;
This sequence of commands first grants full access in schema to a role, gives viewing
(SELECT) and modifying ...