OK, I must be doing something wrong. I’m trying to create a user with only limited access to certain tables. The db is large, complicated, and has tons of users with some complex interactions of permission using groups, etc. I don’t dare revoke any exist permissions, for fear of messing up a production db.
Version is 8.3.9.
I’m currently testing this on the test version of the db, though, which is a clone of the production db. I’ve edited the actual usernames, table names, db names, etc.
I created a role usera.
I revoked everything I could think of (e.g. REVOKE ALL PRIVILEGES ON SCHEMA public FROM usera cascade;, revoke all privileges on database maindb from usera cascade; I also did individual tables:
urldb=# revoke select, update, delete on table1 from usera; ( I tried this with and without CASCADE – no difference)
REVOKE
urldb=# \q
sb-dev-testdb:~# psql -U usera maindb
Welcome to psql 8.3.9, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
urldb=> select * from table1;
All rows display anyway.
\dp table1 shows:
Access privileges for database "maindb"
Schema | Name | Type | Access privileges
--------+-----------+-------+-----------------------------------------------------------------------------------------------
public | languages | table | {postgres=arwdxt/postgres,=arwdxt/postgres,group1=r/postgres,group2=arwdxt/postgres}
(1 row)
I’m sure it’s something simple that I’m doing wrong.
Advice?
Thanks,
Susan