I have a PostgreSQL 9.3 database with the PostGIS extension backing a web application and GeoServer. I have created three users.
A read only user for accessing the data in the reference data schema.
A read/write user for accessing and updating data in the schema that holds the application state.
A read/write/create user for the mapping data being accessed by GeoServer.
The first two work fine. The third one I'm having an issue with. Logged in as the user GeoServer can create new tables just fine. But subsequently cannot read from them. I have to go in specifically and manually apply the permissions. This is untenable for the application. It doesn't make a lot of sense to me that a user could create a table they can't read from. So I figure there is a non-obvious permission setting I missed. My Google searching led me to plenty of instructions for oddities of setting up a read only user, but not for this.
ALTER DEFAULT PRIVILEGES
.DEFAULT PRIVILEGES
may be of help.