I'm trying to create a postgresql user that can select but can't create or drop, insert and so on on a database but I cannot for the life of me figure out how to prevent a user from creating its own tables.
What I've done so far:
create database test; create role readonly; alter role readonly with login; alter role readonly with encrypted password 'test'; revoke all on schema public from public; revoke all on schema public from readonly; revoke all on database test from public; revoke all on database test from readonly; grant connect on database test to readonly;
Yet when I log in to the database as readonly I'm still able to create tables with impunity. What am I missing?